我有以下数据框描述人员信息,其中age_range是根据age列计算得出的。
age gender group age_range
0 46 F 1 >= 30 and < 60
1 50 F 1 >= 30 and < 60
2 63 F 2 >= 60
3 65 F 2 >= 60
4 34 F 1 >= 30 and < 60
5 42 F 2 >= 30 and < 60
6 55 F 1 >= 30 and < 60
7 57 M 1 >= 30 and < 60
接下来,我想要一张表格,其中列出每个组的所有年龄段以及该组中每个年龄段的人数,即使是空箱(任何一个组中没有人年龄小于30岁,并且所有第一组成员年龄在30岁及以上但小于60岁)。
我怎样才能得到以下类似的结果呢?
group age_range count
0 1 < 30 0
1 1 >= 30 and < 60 5
2 1 >= 60 0
3 2 < 30 0
4 2 >= 30 and < 60 1
5 2 >= 60 2
我尝试了多种分组选项,但从未成功获得完整的表格。
MultiIndex.from_product
做一个reindex
替代join
。 - Maarten Fabrédf.groupby(['group','age_range']).size().to_frame('count').reindex(MultiIndex.from_product([df['group'].unique(), df['age_range'].unique()]))
- Ken Wei