Python Panda转换汇总内容



我想转换这个:

df = pd.DataFrame({
'Filter 1': ['False','False','False','False'],
'Filter 2': ['True','False','False','True'],
'Filter 3': ['True','True','True','True']
})
print(df)
Filter 1 Filter 2 Filter 3
----------------------------
0    False     True     True
1    False    False     True
2    False    False     True
3    False     True     True

进入:

result = pd.DataFrame({
'Filter': ['Filter 1', 'Filter 2', 'Filter 3'],
'True': [0,2,4],
'False': [4,2,0]
})
print(result)
Filter  True  False
------------------------
0  Filter 1     0      4
1  Filter 2     2      2
2  Filter 3     4      0

你能帮我吗?这是一个转换+计数值,我无法修复,也找不到

谨致问候!

这是值计数:

df.apply(pd.Series.value_counts).fillna(0).T

输出:

False  True
Filter 1    4.0   0.0
Filter 2    2.0   2.0
Filter 3    0.0   4.0

我们也可以使用DataFrame.melt+pd.crosstab:

df2 = df.melt(var_name='Filter')
pd.crosstab(df2['Filter'], df2['value'], colnames=[None]).reset_index()

Filter  False  True
0  Filter 1      4     0
1  Filter 2      2     2
2  Filter 3      0     4

这里有一个使用stackgroupby.value_counts:

df.stack().groupby(level=1).value_counts().unstack(fill_value=0)
False  True 
Filter 1      4      0
Filter 2      2      2
Filter 3      0      4

最新更新