如果 pandas 交叉表中的所有行都为零,则无法包含列

Unable to include column if all rows are zero in pandas crosstab

在 pandas 交叉表中,如果其他 col 包含全零值,现在我得到如下输出:

  0
0 5
1 2

但我需要获取另一列的输出,即使它包含全零。

  0 1
0 5 0
1 2 0

我正在使用以下代码创建交叉表:

data_crosstab = pd.crosstab(data[df_all.columns[56]],
                                    data[df_all.columns[57]], 
                                       margins = False,dropna=False)

使用DataFrame.reindex:

#margins=False is default value, so removed
#https://pandas.pydata.org/docs/reference/api/pandas.crosstab.html
data_crosstab = pd.crosstab(data[df_all.columns[56]],
                            data[df_all.columns[57]], dropna=False)

data_crosstab = data_crosstab.reindex(columns=[0,1], fill_value=0)

更通用的解决方案:

data_crosstab = data_crosstab.reindex(columns=[0,1],index=[0,1], fill_value=0)