2015-09-01 12 views
5

Próbuję zsumować wszystkie wartości w ramce danych w jeden numer.Suma wszystkich wartości w ramce danych

Tak na przykład z dataframe

  BBG.XAMS.FUR.S_pnl_pos_cost BBG.XAMS.MT.S_pnl_pos_cost 
date                
2015-03-23     -0.674996     -0.674997 
2015-03-24     82.704951     11.868748 
2015-03-25     -11.027327     84.160210 
2015-03-26     228.426675     -131.901556 
2015-03-27     -99.744986     214.579858 

Chciałbym wartość 377,71658 zwrócony.

Próbowałem df.sum(), ale to tylko sumy według kolumny.

Każda pomoc będzie mile widziana.

+0

'' print –

+0

prawda, że ​​nie musi być to rozwiązanie, które sumuje obie kolumny jako jedno działanie, co jest nie tak z dodawaniem? sumy dla każdej kolumny razem jako drugi krok? –

Odpowiedz

3

Wystarczy zsumować kwoty kolumna:

df.sum().sum() 
3

zrobiłbym

>>> df.values.sum() 
377.71658000000002 

który spada do bazowego numpy tablicy i może być najszybszy, jeśli rama jest wszystko- numeryczne. Ale istnieje wiele innych opcji: (. Df.sum() suma())

>>> %timeit df.values.sum() 
100000 loops, best of 3: 6.27 µs per loop 
>>> %timeit df.sum().sum() 
10000 loops, best of 3: 109 µs per loop 
>>> %timeit df.unstack().sum() 
1000 loops, best of 3: 233 µs per loop 
>>> %timeit df.stack().sum() 
1000 loops, best of 3: 190 µs per loop 
+1

Zauważ, że to się nie powiedzie, jeśli masz NaN jako wartość. Możesz zastąpić NaN zerami. df.fillna (0) .values.sum() – Brig

Powiązane problemy