问题描述
我想计算熊猫输入表中的值。表输出中显示了计算后的示例输出。我已经使用了代码:
df2 = table.groupby(['FC_LABEL','MSW_LABEL','CHH_LABEL','RM_LABEL','ASSET_LABEL']).size().unstack(fill_value=0)
但是我得到的输出与表Groupby相同。
表:输入
表:输出
表格:分组依据
解决方法
您可以将DataFrame.melt
与crosstab
结合使用:
df1 = df.melt(var_name='type',value_name='val')
df2 = pd.crosstab(df1['type'],df1['val'])
或者:
df1 = df.melt()
df2 = pd.crosstab(df1['variable'],df1['value'])
或将DataFrame.stack
和SeriesGroupBy.value_counts
与Series.unstack
:
df2 = df.stack().groupby(level=1).value_counts().unstack(fill_value=0)
,
按如下所示使用熔化和交叉表。
import pandas as pd
Table = pd.DataFrame({"FC_LABEL":["Low","Low","High","Low"],"MSW_LABEL":["High","Middle"]})
pd.crosstab(Table.melt()['variable'],Table.melt()['value'])