前提
データフレーム内から
過去のデータを決めた長さ取り出し平均を求めたい
発生している問題・エラーメッセージ
上手くデータが入らずにどうすればよいかわかりません
該当のソースコード
python
ソースコード import pandas as pd df = pd.DataFrame({'data': [1022, 1020, 1018, 1017,1015,1013,1012], 'shop': ['A', 'B', 'A', 'A','A','B','A'], 'profit': [20, 34, 10, 60,50,30,20], 'type' : [1,2,2,1,3,2,1]}) df['profit_2']=[40,30,0,20,0,0,0] #shop,typeでgroupbyして過去2回のprofitの平均を入れたい 試したこと indexer = pd.api.indexers.FixedForwardWindowIndexer(window_size=3) df['profit_2'] = df.groupby(['shop','type'])['profit'].rolling(indexer, min_periods=2)\ .agg(lambda x: x.iloc[1:].mean()).fillna(0, downcast='infer')\ .reset_index(level='shop', drop=True) TypeError: incompatible index of inserted column with frame index
「shop事に過去2回」という部分について
- 過去とはどのような並びを基準としているでしょうか(行は時刻の昇順に並んでいる?)
- 平均値は、各行毎に過去(直近)2回分を計算したいということでしょうか。
具体的に結果として欲しいデータフレーム例を提示ください。

回答2件
あなたの回答
tips
プレビュー