这是我的数据框:
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
非常感谢您的帮助!
最佳答案
将 col1
设置为索引轴。执行stack
操作将其 reshape 为长格式的系列对象。
按生成的多索引系列的级别 0 和 1 进行分组,并计算它们各自的值计数。然后,unstack
并按行和列对索引进行排序,可以选择用 0 填充 NaN
。
(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。
关于python - Pandas - 将每一列单独分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41278156/