私は期間の金額の一連の与えられた「ランニング」累積和を捕獲しようとしています。累積SUM関数
df = df[1:4].cumsum() # this doesn't return the desired result
私は期間の金額の一連の与えられた「ランニング」累積和を捕獲しようとしています。累積SUM関数
df = df[1:4].cumsum() # this doesn't return the desired result
を使用しています。多くの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をご覧ください。
あなたはaxis=1
行全体で合計する:
は、例を参照してください。
df.cumsum(axis=1)
余談 - デフォルト(すなわち、numpyのか、リストのような意味論)によって[1:4]
スライス行を行います。あなたがラベルで列を選択したい場合は、あなたがaxis
パラメータを探しているdf.loc[:, 1:4]