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

时间:2021-03-08 06:51:27

标签: 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       | ghi   |   0  | 1     | 1 

我试过了:

df.groupby(['Country','Class','Country'])['Catalog'].value_counts()

但是我没有得到想要的结果。

对此有任何帮助吗?

1 个答案:

答案 0 :(得分:2)

使用 crosstab 并通过 DataFrame.iloc 删除最后一行:

QQmlApplicationEngine failed to load component
file:///D:/QtProjects/qtforpythonprojects/JooyaTrader01/qml/main.qml: module "material" is not installed

您的解决方案应由 Series.unstack 更改,并由 DataFrame.assign 添加新列,由 df1 = (pd.crosstab([df['Country'], df['Class']], df['Catalog'], margins=True, margins_name='TOTAL') .iloc[:-1]) print (df1) Catalog False True TOTAL Country Class A abc 1 1 2 B def 0 1 1 C ghi 1 0 1 填充:

sum

最后为来自 #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 的列添加 DataFrame.reset_indexDataFrame.rename_axis

MultiIndex
相关问题