1 回答

TA貢獻2021條經驗 獲得超8個贊
最佳做法是對性能進行矢量化計算。因此我用過np.where
反轉你的邏輯,當百分比小于等于零且狀態不是Erisa時默認為零
如果百分比 >零則標準計算
留下一個案例,它是Erisa并且百分比 <零
為了更好地衡量,我添加了一個列檢查以更好地測試邏輯是否按定義工作
r = 10
df = pd.DataFrame({"ERISA Percentage":[random.randint(-25,100) for i in range(r)],
"Net Amount (Local)":[random.randint(50,125) for i in range(r)],
"ERISA Status":[["Erisa","a","b"][random.randint(0,2)] for i in range(r)]
})
df = df.assign(**{"Erisa (Local)":lambda dfa:
np.where((dfa["ERISA Percentage"]<=0) & (dfa["ERISA Status"]!="Erisa"), 0,
np.where(dfa["ERISA Percentage"]>0,
dfa["ERISA Percentage"]/100*dfa["Net Amount (Local)"],
dfa["Net Amount (Local)"])),
"check":lambda dfa: dfa["Erisa (Local)"]==dfa["Net Amount (Local)"]
})
print(df.to_string(index=False))
輸出
ERISA Percentage Net Amount (Local) ERISA Status Erisa (Local) check
79 56 Erisa 44.24 False
68 124 b 84.32 False
33 124 Erisa 40.92 False
-21 100 b 0.00 False
42 124 b 52.08 False
-5 76 b 0.00 False
38 95 Erisa 36.10 False
20 109 b 21.80 False
55 63 a 34.65 False
-13 106 Erisa 106.00 True
添加回答
舉報