2016-12-22 71 views
2

这里的每一列是我的数据框:熊猫 - 集团本身

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 

非常感谢您的帮助!

回答

2

col1设置为索引轴。执行stack操作将其重塑为长格式的系列对象。

multiindex系列的groupby级0和1生成并计算它们各自的值计数。然后,unstack和排序两者的索引行和纵列,任选被@jezrael填充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)) 

enter image description here

甲每评论进一步简化的解决方案:

(df.set_index('col1').stack().groupby(level=[0,1]).value_counts() 
    .sort_index(ascending=[False, True, False]).unstack([1,2]).fillna(0).astype(int)) 

enter image description here

此外,您可以按降序对索引轴进行排序以获取y我们期望的o/p。

+1

我删除评论,因为'真''False'在索引中对换,对不起;( – jezrael

+1

和好的解决方案,+1 – jezrael

+1

这很完美,非常感谢! –