这是我的数据框:
col1 col2 col3 col4
0 True False True True
1 True True False False
2 False False True False
3 True True False True
有没有办法对我的数据进行分组,以便得到类似下面的内容,其中表中的数字是出现次数:
col2 col3 col4
True False True False True False
col1
True 2 1 x x x x
False 0 1 x x x x
非常感谢你的帮助!
答案 0 :(得分:2)
将col1
设置为索引轴。执行stack
操作以将其重新整形为长格式化的系列对象。
生成多索引系列的Groupby级别0和1并计算它们各自的值计数。然后,unstack
并对索引行和列进行排序,可选择将NaNs
填充为0。
(df.set_index('col1').stack().groupby(level=[0,1]).value_counts().unstack(level=[1,2])
.sort_index(ascending=False, axis=1).sort_index(ascending=False).fillna(0).astype(int))
@jezrael的每条评论的进一步简化解决方案:
(df.set_index('col1').stack().groupby(level=[0,1]).value_counts()
.sort_index(ascending=[False, True, False]).unstack([1,2]).fillna(0).astype(int))
此外,您可以按降序对索引轴进行排序,以获得所需的o / p。