我在資料框中使用條件乘法并使用以下語法:
if(df_merged1["region_id"]=="EMEA"):
df_merged1["fcst_gr"] = df_merged1["plan_price_amount"]*(df_merged1["Enr"]-df_merged1["FM_f"]) df_merged1["OA_f"]-df_merged1["TX_f"]
else:
df_merged1["fcst_gr"] = df_merged1["plan_price_amount"]*(df_merged1["Enr"]-df_merged1["FM_f"]) df_merged1["OA_f"]
我希望僅在地區為 EMEA 時才減稅。但出現以下錯誤
ValueError: The truth value of a {type(self).__name__} is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我認為證明 if 條件存在一些問題,但是如何解決它卻沒有任何想法
uj5u.com熱心網友回復:
這里沒有問題 -df_merged1["region_id"]=="EMEA"回傳一個pd.Series填充了布林值的物件,而不是可以使用條件陳述句處理的布林值。Pandas 不愿意自動運行將 Series 轉換為類似Series.any()or的布林值的函式Series.all(),因此會出現錯誤。
要實作您的目標,請使用df.apply, axis=1lambda 運算式和三元運算子。這樣,您可以根據每一行的列["fcst_gr"]中的值填充一列["region_id"]:
df_merged1["fcst_gr"] = df_merged1.apply(
lambda row: row["plan_price_amount"] * (row["Enr"] - row["FM_f"])
row["OA_f"]
- row["TX_f"]
if row["region_id"] == "EMEA"
else row["plan_price_amount"] * (row["Enr"] - row["FM_f"]) row["OA_f"],
axis=1,
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/453408.html
下一篇:數元音和輔音
