回答編集履歴

1

追記

2020/08/07 08:02

投稿

can110
can110

スコア38278

test CHANGED
@@ -5,6 +5,16 @@
5
5
  商品の種類が増える可能性があるのであればデータは「縦持ち」のほうがよいです。
6
6
 
7
7
  横持にしたければ`pivot_table`を使えばよいです。
8
+
9
+
10
+
11
+ 追記
12
+
13
+ -----
14
+
15
+ たとえば「商品」ではなく「ハンバーガー」「ジュース」などの大まかな商品グループ毎に集計したくなった場合、横持だと大変です。
16
+
17
+ 縦持ちなら、集計対象でグルーピングして`pivot_table`するだけですみます。
8
18
 
9
19
  ```Python
10
20
 
@@ -56,4 +66,32 @@
56
66
 
57
67
  #All 1.0 8.0 7.0 19.0 12.0 3.0 50
58
68
 
69
+
70
+
71
+
72
+
73
+ # 商品グループ毎に同様の集計を行う
74
+
75
+
76
+
77
+ df['商品グループ'] = df['商品'].str.replace('[A-Z]','')
78
+
79
+
80
+
81
+ df2 = pd.pivot_table(df, index='日付', columns='商品グループ', values='個数', margins=True, aggfunc=np.sum)
82
+
83
+ df2 = df2.fillna(0)
84
+
85
+ print(df2)
86
+
87
+ #商品グループ デザート ドリンク バーガー All
88
+
89
+ #日付
90
+
91
+ #2020/07/11 0.0 8.0 22.0 30
92
+
93
+ #2020/07/12 1.0 7.0 12.0 20
94
+
95
+ #All 1.0 15.0 34.0 50
96
+
59
97
  ```