質問編集履歴

1

2つの要素についてgroupbyした場合について

2022/12/10 05:01

投稿

yamato0565
yamato0565

スコア17

test CHANGED
File without changes
test CHANGED
@@ -15,20 +15,23 @@
15
15
  ```ここに言語名を入力
16
16
  ソースコード
17
17
  import pandas as pd
18
+
18
19
  df = pd.DataFrame({'data': [1022, 1020,
19
20
  1018, 1017,1015,1013,1012],
20
21
  'shop': ['A', 'B', 'A', 'A','A','B','A'],
21
- 'profit': [20, 34, 10, 60,50,30,20]})
22
+ 'profit': [20, 34, 10, 60,50,30,20],
23
+ 'type' : [1,2,2,1,3,2,1]})
22
24
 
23
- df['profit_2']=[35,30,55,35,20,0,0] #shop事に過去2回のprofitの平均を入れたい
25
+ df['profit_2']=[40,30,0,20,0,0,0] #shop,typeでgroupbyして過去2回のprofitの平均を入れたい
24
26
 
25
27
 
26
28
  試したこと
27
- def mean_2(a):
29
+ indexer = pd.api.indexers.FixedForwardWindowIndexer(window_size=3)
28
- target = df[df['data']>a].groupby('shop')['profit'].head(3).mean()
30
+ df['profit_2'] = df.groupby(['shop','type'])['profit'].rolling(indexer, min_periods=2)\
31
+ .agg(lambda x: x.iloc[1:].mean()).fillna(0, downcast='infer')\
29
- return target
32
+ .reset_index(level='shop', drop=True)
30
33
 
31
- mean_2(df['data'])
34
+ TypeError: incompatible index of inserted column with frame index
32
35
 
33
36
  ```
34
37