Assigning to a column name that doesn't exist yet creates it:
df["price_with_tax"] = df["unit_price"] * 1.08
The calculation runs on every row at once, with no loop. You can combine columns (df["units"] * df["unit_price"]), compare them (df["revenue"] > 500 gives True or False), and round with .round(2).
For a value that depends on a condition, use NumPy's where. It takes the condition, the value when it's true and the value when it's false:
import numpy as np
df["size"] = np.where(df["units"] >= 5, "Bulk", "Standard")
df.assign(...) is another way. It returns a new DataFrame instead of changing df, so store the result: df = df.assign(cost=df["revenue"] * 0.35).
A new column goes at the right-hand end of the table. Assigning to an existing name replaces that column.