回答編集履歴
1
リストを使わない方法
answer
CHANGED
@@ -26,4 +26,46 @@
|
|
26
26
|
((df['転入時年齢'] >= 95)&(df['転入時年齢'] <= 99)).sum(),
|
27
27
|
((df['転入時年齢'] >= 100)).sum()] for df in df_list]
|
28
28
|
```
|
29
|
-
直接データフレームを作るのは、処理はたいしたことはないのですが、テストデータ作成に時間がかかるのでちょっと待ってください。
|
29
|
+
直接データフレームを作るのは、処理はたいしたことはないのですが、テストデータ作成に時間がかかるのでちょっと待ってください。
|
30
|
+
|
31
|
+
こんな感じです。ちょっと勉強が必要ですが、読み解いてください。
|
32
|
+
|
33
|
+
```python
|
34
|
+
>>> import pandas as pd
|
35
|
+
>>> df_list = [df_4,df_5,df_6,df_7,df_8,df_9,df_10,df_11,df_12,df_13]
|
36
|
+
>>> dummy_df = pd.DataFrame({'転入時年齢範囲':list(range(0,101,5)), 'count': [0]*21})
|
37
|
+
>>>
|
38
|
+
>>> result_list = []
|
39
|
+
>>> for i, df in enumerate(df_list):
|
40
|
+
... temp_df1 = pd.DataFrame({'転入時年齢範囲':df['転入時年齢'].apply(lambda age: (age//5)*5 if age<100 else 100), 'count':[1]*len(df)})
|
41
|
+
... temp_df2 = pd.concat([temp_df1, dummy_df]).groupby('転入時年齢範囲').sum()
|
42
|
+
... temp_df2.columns = [f'df_{i+4}']
|
43
|
+
... result_list.append(temp_df2)
|
44
|
+
...
|
45
|
+
>>> result_df = pd.concat(result_list, axis=1)
|
46
|
+
>>> result_df.index = [f'{i}歳~{i+4}歳' for i in range(0,100,5)] + ['100歳以上']
|
47
|
+
>>>
|
48
|
+
>>> print(result_df)
|
49
|
+
df_4 df_5 df_6 df_7 df_8 df_9 df_10 df_11 df_12 df_13
|
50
|
+
0歳~4歳 0 0 1 2 1 3 2 2 3 1
|
51
|
+
5歳~9歳 3 3 7 3 2 2 2 6 0 3
|
52
|
+
10歳~14歳 1 2 1 0 4 5 4 3 3 5
|
53
|
+
15歳~19歳 2 2 3 1 0 1 4 5 2 6
|
54
|
+
20歳~24歳 0 0 2 2 3 0 3 2 2 3
|
55
|
+
25歳~29歳 1 1 3 2 3 1 1 3 2 6
|
56
|
+
30歳~34歳 2 4 0 7 1 2 3 4 0 5
|
57
|
+
35歳~39歳 1 1 0 0 5 2 2 3 1 2
|
58
|
+
40歳~44歳 1 2 1 4 2 3 6 3 3 2
|
59
|
+
45歳~49歳 1 2 3 1 0 1 4 9 3 0
|
60
|
+
50歳~54歳 1 1 3 4 5 2 4 0 1 4
|
61
|
+
55歳~59歳 0 2 1 1 6 2 7 3 0 3
|
62
|
+
60歳~64歳 2 0 2 3 7 1 2 3 1 2
|
63
|
+
65歳~69歳 2 1 2 2 1 0 2 5 2 4
|
64
|
+
70歳~74歳 0 0 0 1 2 1 3 0 0 7
|
65
|
+
75歳~79歳 1 3 4 1 1 1 2 3 2 2
|
66
|
+
80歳~84歳 1 5 3 2 1 2 0 2 6 3
|
67
|
+
85歳~89歳 4 2 4 1 0 1 1 1 3 3
|
68
|
+
90歳~94歳 0 0 1 2 3 3 5 5 0 2
|
69
|
+
95歳~99歳 1 1 4 2 0 0 2 5 1 4
|
70
|
+
100歳以上 6 5 3 5 7 4 11 5 2 8
|
71
|
+
```
|