Python 如何拆分列中的两种值并计算出现的次数?

Python 如何拆分列中的两种值并计算出现的次数?,python,pandas,Python,Pandas,我想要一个数据帧,它有一个TRUE和FALSE列。我想得到一个数据帧,如: 样本输入 Country | Class | Catalog A | abc | TRUE A | abc | FALSE B | def | TRUE C | ghi | FALSE Country | Class | TRUE | FALSE | TOTAL A | abc | 1 | 1 | 2 B | def | 1 | 0 | 1 C

我想要一个数据帧,它有一个TRUE和FALSE列。我想得到一个数据帧,如:

样本输入

Country | Class | Catalog
A | abc | TRUE  
A | abc | FALSE
B | def | TRUE
C | ghi | FALSE
Country | Class | TRUE | FALSE | TOTAL 
A       |  abc  |    1 | 1     | 2
B       | def   |   1  | 0     | 1
C       | ghi   |   0  | 1     | 1 
样本输出

Country | Class | Catalog
A | abc | TRUE  
A | abc | FALSE
B | def | TRUE
C | ghi | FALSE
Country | Class | TRUE | FALSE | TOTAL 
A       |  abc  |    1 | 1     | 2
B       | def   |   1  | 0     | 1
C       | ghi   |   0  | 1     | 1 
我试过:

df.groupby(['Country','Class','Country'])['Catalog'].value_counts()
但我没有得到预期的结果

对此有何帮助?

通过以下方式与“删除最后一行”一起使用:

您的解决方案应通过以下方式进行更改并添加新列:
sum
s:

#removed repeated column in groupby
df1 = (df.groupby(['Country','Class'])['Catalog']
         .value_counts()
         .unstack(fill_value=0)
         .assign(Total = lambda x: x.sum(axis=1)))
print (df1)
Catalog        False  True  Total
Country Class                    
A       abc        1     1      2
B       def        0     1      1
C       ghi        1     0      1
最后是
MultiIndex
add和中的列:


您好,我尝试了第二种解决方案,但在用Excel中的数据透视表验证时,数字不匹配,试图找出原因。@coder_bg-Hmmm,很难说,差异很大?是的,非常显著。我们应该使用COUNT而不是SUM吗?@coder\u bg-不,你需要的是counts@coder_bg-是否可能更改查看错误输出的数据?