import pandas as pd df = pd.DataFrame( { "item": ["notebook", "pencil", "eraser"], "qty": [3, 10, 5], "unit_price": [2.5, 0.4, 0.8], } ) print(f"pandas {pd.__version__}") print() print("BASE") print(df) print() df["line_total"] = df["qty"] * df["unit_price"] print("LINE_TOTAL") print(df) print() df["currency"] = "USD" print("CURRENCY") currency_cols = ["item", "line_total", "currency"] print(df[currency_cols]) print() df["bulk_order"] = False print("BULK_DEFAULT") bulk_cols = ["item", "qty", "bulk_order"] print(df[bulk_cols]) print() df.loc[df["qty"] >= 10, "bulk_order"] = True print("BULK_LOC") print(df[bulk_cols]) print() result = df.assign( discount=lambda data: (data["line_total"] * 0.10).where(data["bulk_order"], 0), net_total=lambda data: data["line_total"] - data["discount"], ) print("ASSIGN") summary_cols = ["item", "line_total", "discount", "net_total"] print(result[summary_cols]) print() result.insert(1, "sku", ["N-100", "P-200", "E-300"]) print("INSERT") insert_cols = ["item", "sku", "qty", "line_total", "net_total"] print(result[insert_cols]) print() print("VERIFY_COLUMNS") print(result.columns.tolist()) print() print("VERIFY_DTYPES") dtype_cols = ["line_total", "bulk_order", "net_total"] print(result[dtype_cols].dtypes)