我有一個如下的資料框:
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
我想得到資料框所有元素的總和,總是不包括一列。在這個例子中,期望的結果是:
60 57 54 51 48 45
我找到了一個似乎可以完成這項作業的解決方案,但我很確定必須有一種更有效的方法來做同樣的事情:
for x in df.columns:
df.drop(columns = x).sum().sum()
uj5u.com熱心網友回復:
使用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
uj5u.com熱心網友回復:
只需用每列的總和減去總和。這可以使用賦值運算式有效地完成:
out = (s:=df.sum()).sum()-s
輸出:
a 60
b 57
c 54
d 51
e 48
f 45
uj5u.com熱心網友回復:
另一種方法:使用廣播從 DataFrame 的總和中減去列總和:
out = df.sum().sum() - df.sum()
輸出:
a 60
b 57
c 54
d 51
e 48
f 45
dtype: int64
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409845.html
標籤:
上一篇:使用隨機噪聲將ID添加到資料幀
