我想要一个包含 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()
但是我没有得到想要的结果。
对此有任何帮助吗?
答案 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_index
和 DataFrame.rename_axis
:
MultiIndex