回答編集履歴

1

リストを使わない方法

2021/04/27 05:57

投稿

ppaul
ppaul

スコア24670

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
+ ```