簡體   English   中英

在引用列時將 function 逐行應用於 pandas dataframe

[英]Apply function rowwise to pandas dataframe while referencing a column

我有一個 pandas dataframe 像這樣:

df = pd.DataFrame({'A': [2, 3], 'B': [1, 2], 'C': [0, 1], 'D': [1, 0], 'total': [4, 6]})

   A  B  C  D  total
0  2  1  0  1      4
1  3  2  1  0      6

我正在嘗試執行逐行計算並使用結果創建一個新列。 計算是將每一列 ABCD 除以總數,平方,然后逐行求和。 這應該是結果(如果總計為 0,則為 0):

   A  B  C  D  total  result
0  2  1  0  1      4   0.375
1  3  2  1  0      6   0.389

這是我到目前為止嘗試過的,但它總是返回 0:

df['result'] = df[['A', 'B', 'C', 'D']].apply(lambda x: ((x/df['total'])**2).sum(), axis=1)

我想問題是 lambda function 中的df['total'] ,因為如果我用一個數字替換它,它工作正常。 我不知道如何解決這個問題。 感謝任何建議。

divpowsum的組合可以解決這個問題:

df["result"] = df.filter(regex="[^total]").div(df.total, axis=0).pow(2).sum(1)
df

A   B   C   D   total   result
0   2   1   0   1   4   0.375000
1   3   2   1   0   6   0.388889

你可以做

df['result'] = (df.loc[:, "A": 'D'].divide(df.total, axis=0) ** 2).sum(axis=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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