回答編集履歴
1
追記
answer
CHANGED
@@ -19,4 +19,24 @@
|
|
19
19
|
})
|
20
20
|
|
21
21
|
df_group = df.groupby(['sya','kan']).apply(func).reset_index()
|
22
|
-
```
|
22
|
+
```
|
23
|
+
|
24
|
+
下記のようにpandas.pivot_tableを使ってやる方が速いんじゃないかという気がします。
|
25
|
+
(実データで試さないとわからないです)
|
26
|
+
```python
|
27
|
+
df2 = pd.pivot_table(df, 'kinngaku',
|
28
|
+
index=['sya', 'kan'], columns=['ksex', 'keiro'],
|
29
|
+
aggfunc='sum', fill_value=0)
|
30
|
+
df2.columns = df2.columns.map({
|
31
|
+
(0, 0): 'kinngaku_man_sin',
|
32
|
+
(0, 1): 'kinngaku_man_mina',
|
33
|
+
(1, 0): 'kinngaku_woman_sin',
|
34
|
+
(1, 1): 'kinngaku_woman_mina',
|
35
|
+
})
|
36
|
+
df2['kinngaku_man'] = df2['kinngaku_man_sin'] + df2['kinngaku_man_mina']
|
37
|
+
df2['kinngaku_woman'] = df2['kinngaku_woman_sin'] + df2['kinngaku_woman_mina']
|
38
|
+
df2['kinngaku'] = df2['kinngaku_man'] + df2['kinngaku_woman']
|
39
|
+
```
|
40
|
+
|
41
|
+
大きくグループ化して、applyの中で分割計算する処理をいれるか、
|
42
|
+
小さくグループ化して、結果を足し合わせるかの違いです。
|