2015-10-23 15 views
5

私は期間の金額の一連の与えられた「ランニング」累積和を捕獲しようとしています。累積SUM関数

enter image description here

df = df[1:4].cumsum() # this doesn't return the desired result 

答えて

1

を使用しています。多くのPandas関数は、この引数を使用して、列全体または行全体に操作を適用します。行単位で適用する場合はaxis=0、列単位で適用する場合はaxis=1を使用します。この操作は実際に列をトラバースするので、axis=1が必要です。それ自体で

df.cumsum(axis=1)は、出力テーブルを生成するためにあなたの例で動作します。

In [3]: df.cumsum(axis=1) 
Out[3]: 
     1 2 3 4 
10 16 30 41 61 
51 13 29 40 50 
13 11 30 45 61 
321 12 27 37 52 

特定の列の範囲に限定したいと思っています。これを行うには、.locを列ラベル(私の中の文字列)とともに使用できます。

In [4]: df.loc[:, '2':'3'].cumsum(axis=1) 
Out[4]: 
     2 3 
10 14 25 
51 16 27 
13 19 34 
321 15 25 

.locはラベルベースであり、境界を含んでいます。 Pandasでのインデックス作成の詳細については、docsをご覧ください。

2

あなたはaxis=1行全体で合計する:

は、例を参照してください。

df.cumsum(axis=1) 

余談 - デフォルト(すなわち、numpyのか、リストのような意味論)によって[1:4]スライスを行います。あなたがラベルで列を選択したい場合は、あなたがaxisパラメータを探しているdf.loc[:, 1:4]