簡體   English   中英

不包括一列 pandas dataframe 的循環和

[英]Loop sum excluding one column of pandas dataframe

我有一個 dataframe 如下:

import pandas as pd
df = pd.DataFrame([(1,2,3,4,5,6),
                   (1,2,3,4,5,6),
                   (1,2,3,4,5,6)], columns=['a','b','c','d','e','f'])

Out:
    a b c d e f
0   1 2 3 4 5 6
1   1 2 3 4 5 6 
2   1 2 3 4 5 6

我想得到 dataframe 的所有元素的總和,總是不包括一列。 在這個例子中,期望的結果是:

60 57 54 51 48 45

我找到了一個似乎可以完成這項工作的解決方案,但我很確定必須有一種更有效的方法來做同樣的事情:

for x in df.columns:
    df.drop(columns = x).sum().sum()

使用DataFrame.rsub通過df.sum(axis=1)從右側求和的行中減去,最后為每列的總和添加sum

s = df.rsub(df.sum(axis=1), axis=0).sum()
print (s)
a    60
b    57
c    54
d    51
e    48
f    45
dtype: int64

只需用每列的總和減去總和。 這可以使用賦值表達式有效地完成:

out = (s:=df.sum()).sum()-s

output:

a    60
b    57
c    54
d    51
e    48
f    45

還有一種方法:使用廣播從 DataFrame 的總和中減去列總和:

out = df.sum().sum() - df.sum()

Output:

a    60
b    57
c    54
d    51
e    48
f    45
dtype: int64

暫無
暫無

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

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