pd.crosstab() 的自定义规范化
Customized normalization of pd.crosstab()
我正在使用 pandas 数据框并使用以下交叉表公式对结果进行制表:
ct = pd.crosstab(index=[df['Gender'], df['Education'],df['MaritalStatus']],
columns=df['month'], normalize='columns').round(2)
交叉表的输出:
我不想按整列计算百分比。相反,例如,对于第一行,我想要的输出是计算 0 级女性的百分比和单身/0 级女性的数量(以黄色突出显示)。
实现这个的方法是什么?
使用GroupBy.transform
并划分原始输出(也删除了normalize='columns'
):
ct = pd.crosstab(index=[df['Gender'], df['Education'],df['MaritalStatus']],
columns=df['month'])
#normalize by levels Gender and Education
ct = ct.div(ct.groupby(level=['Gender','Education']).transform('sum')).round(2)
我正在使用 pandas 数据框并使用以下交叉表公式对结果进行制表:
ct = pd.crosstab(index=[df['Gender'], df['Education'],df['MaritalStatus']],
columns=df['month'], normalize='columns').round(2)
交叉表的输出:
我不想按整列计算百分比。相反,例如,对于第一行,我想要的输出是计算 0 级女性的百分比和单身/0 级女性的数量(以黄色突出显示)。
实现这个的方法是什么?
使用GroupBy.transform
并划分原始输出(也删除了normalize='columns'
):
ct = pd.crosstab(index=[df['Gender'], df['Education'],df['MaritalStatus']],
columns=df['month'])
#normalize by levels Gender and Education
ct = ct.div(ct.groupby(level=['Gender','Education']).transform('sum')).round(2)