[英]Pandas - Apply a function to a dataframe with several arguments from different columns
[英]How to apply a function with several dataframe columns as arguments?
我正在嘗試根據其他列和我創建的 function 在 pandas dataframe 中計算一個新列。 而不是使用for循環,我更喜歡將 function 與整個 dataframe 列一起應用。
我的代碼是這樣的:
df['po'] = vect.func1(df['gra'],
Se,
df['p_a'],
df['t'],
Tc)
其中 df['gra']、df['p_a'] 和 df['t'] 是我的 dataframe 列(參數),Se 和 Tc 是其他(實際)參數。 df['po'] 是我的新專欄。
func1 是我的 vect package 中描述的 function。 這個 function 是:
def func1(g, surf_e, Pa, t, Tco):
if (t <= Tco):
pos = (g-(Pa*surf_e*g))
else:
pos = 0.0
return(pos)
當以這種方式實現時,我收到一條錯誤消息,涉及以下行: if (t <= Tco):
錯誤是: ValueError: Series 的真值不明確。 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all() 。
我閱讀了 pandas 文檔,但沒有找到解決方案。 誰能解釋我有什么問題?
我嘗試使用apply :
例如:
df['po'] = df['gra'].apply(vect.func1)
但我不知道如何將 apply 與多個列一起用作參數。
提前謝謝你。
將np.where
與所需條件、條件為 True 時的值和默認值一起使用。
df['po'] = np.where(
df['t'] <= Tc, # Condition
df['gra'] - (df['P_a'] * Se * df['gra']), # Value if True
0 # Value if False
)
編輯:
不要忘記import numpy as np
此外,您會收到一個錯誤,因為您將一個系列與一個系列進行比較,因此獲得一系列 boolean 值,而不是如果條件需要的原子 boolean 值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.