回答編集履歴
1
リストを使わない方法
test
CHANGED
@@ -55,3 +55,87 @@
|
|
55
55
|
```
|
56
56
|
|
57
57
|
直接データフレームを作るのは、処理はたいしたことはないのですが、テストデータ作成に時間がかかるのでちょっと待ってください。
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
こんな感じです。ちょっと勉強が必要ですが、読み解いてください。
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
```python
|
66
|
+
|
67
|
+
>>> import pandas as pd
|
68
|
+
|
69
|
+
>>> df_list = [df_4,df_5,df_6,df_7,df_8,df_9,df_10,df_11,df_12,df_13]
|
70
|
+
|
71
|
+
>>> dummy_df = pd.DataFrame({'転入時年齢範囲':list(range(0,101,5)), 'count': [0]*21})
|
72
|
+
|
73
|
+
>>>
|
74
|
+
|
75
|
+
>>> result_list = []
|
76
|
+
|
77
|
+
>>> for i, df in enumerate(df_list):
|
78
|
+
|
79
|
+
... temp_df1 = pd.DataFrame({'転入時年齢範囲':df['転入時年齢'].apply(lambda age: (age//5)*5 if age<100 else 100), 'count':[1]*len(df)})
|
80
|
+
|
81
|
+
... temp_df2 = pd.concat([temp_df1, dummy_df]).groupby('転入時年齢範囲').sum()
|
82
|
+
|
83
|
+
... temp_df2.columns = [f'df_{i+4}']
|
84
|
+
|
85
|
+
... result_list.append(temp_df2)
|
86
|
+
|
87
|
+
...
|
88
|
+
|
89
|
+
>>> result_df = pd.concat(result_list, axis=1)
|
90
|
+
|
91
|
+
>>> result_df.index = [f'{i}歳~{i+4}歳' for i in range(0,100,5)] + ['100歳以上']
|
92
|
+
|
93
|
+
>>>
|
94
|
+
|
95
|
+
>>> print(result_df)
|
96
|
+
|
97
|
+
df_4 df_5 df_6 df_7 df_8 df_9 df_10 df_11 df_12 df_13
|
98
|
+
|
99
|
+
0歳~4歳 0 0 1 2 1 3 2 2 3 1
|
100
|
+
|
101
|
+
5歳~9歳 3 3 7 3 2 2 2 6 0 3
|
102
|
+
|
103
|
+
10歳~14歳 1 2 1 0 4 5 4 3 3 5
|
104
|
+
|
105
|
+
15歳~19歳 2 2 3 1 0 1 4 5 2 6
|
106
|
+
|
107
|
+
20歳~24歳 0 0 2 2 3 0 3 2 2 3
|
108
|
+
|
109
|
+
25歳~29歳 1 1 3 2 3 1 1 3 2 6
|
110
|
+
|
111
|
+
30歳~34歳 2 4 0 7 1 2 3 4 0 5
|
112
|
+
|
113
|
+
35歳~39歳 1 1 0 0 5 2 2 3 1 2
|
114
|
+
|
115
|
+
40歳~44歳 1 2 1 4 2 3 6 3 3 2
|
116
|
+
|
117
|
+
45歳~49歳 1 2 3 1 0 1 4 9 3 0
|
118
|
+
|
119
|
+
50歳~54歳 1 1 3 4 5 2 4 0 1 4
|
120
|
+
|
121
|
+
55歳~59歳 0 2 1 1 6 2 7 3 0 3
|
122
|
+
|
123
|
+
60歳~64歳 2 0 2 3 7 1 2 3 1 2
|
124
|
+
|
125
|
+
65歳~69歳 2 1 2 2 1 0 2 5 2 4
|
126
|
+
|
127
|
+
70歳~74歳 0 0 0 1 2 1 3 0 0 7
|
128
|
+
|
129
|
+
75歳~79歳 1 3 4 1 1 1 2 3 2 2
|
130
|
+
|
131
|
+
80歳~84歳 1 5 3 2 1 2 0 2 6 3
|
132
|
+
|
133
|
+
85歳~89歳 4 2 4 1 0 1 1 1 3 3
|
134
|
+
|
135
|
+
90歳~94歳 0 0 1 2 3 3 5 5 0 2
|
136
|
+
|
137
|
+
95歳~99歳 1 1 4 2 0 0 2 5 1 4
|
138
|
+
|
139
|
+
100歳以上 6 5 3 5 7 4 11 5 2 8
|
140
|
+
|
141
|
+
```
|