2016-10-18 46 views
6

Więc powiedzmy mam poniższej tabeli:Suma kilku kolumn z dataframe pandy

In [2]: df = pd.DataFrame({'a': [1,2,3], 'b':[2,4,6], 'c':[1,1,1]}) 

In [3]: df 
Out[3]: 
    a b c 
0 1 2 1 
1 2 4 1 
2 3 6 1 

mogę podsumować aib ten sposób:

In [4]: sum(df['a']) + sum(df['b']) 
Out[4]: 18 

jednak nie jest to bardzo wygodne dla większych ramka danych, w której należy sumować wiele kolumn razem.

Czy istnieje lepszy sposób na sumowanie kolumn (podobnie jak poniżej)? Co się stanie, jeśli chcę zsumować całą ramkę DataFrame bez określania kolumn?

In [4]: sum(df[['a', 'b']]) #that will not work! 
Out[4]: 18 
In [4]: sum(df) #that will not work! 
Out[4]: 21 

Odpowiedz

7

myślę, że można użyć podwójnego sum - pierwszy DataFrame.sum tworzyć Series kwot i drugą sumą Series.sum wysiąść Series:

print (df[['a','b']].sum()) 
a  6 
b 12 
dtype: int64 

print (df[['a','b']].sum().sum()) 
18 

Można również użyć:

print (df[['a','b']].sum(axis=1)) 
0 3 
1 6 
2 9 
dtype: int64 

print (df[['a','b']].sum(axis=1).sum()) 
18 

Dziękuję pirSquared dla innego rozwiązania - przekonwertuj df na numpy array przez values i sum.

print (df[['a','b']].values.sum()) 
18 

print (df.sum().sum()) 
21 
+2

również 'df [[ 'a', 'b']] values.sum()' – piRSquared

Powiązane problemy