Pandas 如何确保所有行/列都显示为交叉表?

Pandas 如何确保所有行/列都显示为交叉表?,pandas,Pandas,我正在计算一个简单的交叉表,用于转换矩阵,如下所示: test_df=pd.DataFrame({'from':['A','A','B','C'],'to':['A','B','B',None]}, 列=[“从”、“到”]) pd.交叉表(test_-df['from'],test_-df['to'],dropna=False) 它生成以下矩阵: A | B --------- A 1 | 1 --------- B 0 | 1 我希望它包括所有转换,即使它们为0,如下所示:

我正在计算一个简单的交叉表,用于转换矩阵,如下所示:

test_df=pd.DataFrame({'from':['A','A','B','C'],'to':['A','B','B',None]},
列=[“从”、“到”])
pd.交叉表(test_-df['from'],test_-df['to'],dropna=False)
它生成以下矩阵:

   A | B
---------
A  1 | 1
---------
B  0 | 1
我希望它包括所有转换,即使它们为0,如下所示:

   A | B | C
-------------
A  1 | 1 | 0
-------------
B  0 | 1 | 0
-------------
C  0 | 0 | 0
是否有一些设置我错过了这样做?我尝试检查选项,但找不到任何内容。

最后使用:

i = test_df[['from','to']].stack().unique()

new_df = (pd.crosstab(test_df['from'], test_df['to'],dropna = False)
            .reindex(index = i,columns=i,fill_value =0))
print(new_df)
to    A  B  C
from         
A     1  1  0
B     0  1  0
C     0  0  0
另一种方法:

(test_df.pivot_table(index = 'from',columns = 'to',aggfunc = 'size',fill_value = 0)
        .reindex(index = i,columns = i,fill_value = 0))