簡體   English   中英

如何應用具有多個 dataframe 列的 function 作為 arguments?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM