私はPandas groupby cumulative sumを見つけたので、非常に便利です。しかし、私は、逆累積合計の計算方法を決定したいと思います。パンダPython Groupby Cummulative Sum Reverse
このリンクから、以下のことが示唆されます。
df.groupby(by=['name','day']).sum().groupby(level=[0]).cumsum()
合計を逆にするために、データをスライスしてみましたが失敗しました。
df.groupby(by=['name','day']).ix[::-1, 'no'].sum().groupby(level=[0]).cumsum()
Jack | Monday | 10 | 90
Jack | Tuesday | 30 | 80
Jack | Wednesday | 50 | 50
Jill | Monday | 40 | 80
Jill | Wednesday | 40 | 40
編集:私は、列の数に試してみて、グループ
import pandas as pd
df = pd.DataFrame(
{'name': ['Jack', 'Jack', 'Jack', 'Jill', 'Jill'],
'surname' : ['Jones','Jones','Jones','Smith','Smith'],
'car' : ['VW','Mazda','VW','Merc','Merc'],
'country' : ['UK','US','UK','EU','EU'],
'year' : [1980,1980,1980,1980,1980],
'day': ['Monday', 'Tuesday','Wednesday','Monday','Wednesday'],
'date': ['2016-02-31','2016-01-31','2016-01-31','2016-01-31','2016-01-31'],
'no': [10,30,50,40,40],
'qty' : [100,500,200,433,222]})
が、それはグループ化を適用するために失敗します。 フィードバックに基づいて、私はコードを実装し、データフレームを大きく作ってみました。
df = df.groupby(by=['name','surname','car','country','year','day','date']).sum().iloc[::-1].groupby(level=[0]).cumsum().iloc[::-1].reset_index()
なぜですか?私は、マツダとマツダとのジャック・ジョーンズが、VWのジャック・ジョーンズとは別の累積数量になると予想しています。
@BradSolomon、あなたがdidntはを参照して、残念ながらリンクをして、グループを含める方法を示しています。私の更新されたポストを見て、これがもっと分かりやすいかどうか教えてください - 私は仕事をすることによってグループを得るように見えません。 – Travis