行和列中具有相同变量的交叉表

Crosstab with the same variables in rows and columns

我有以下数据框:

       A      B     C
0   True  False  True
1  False   True  True
2   True   True  True
3   True  False  True

我想找出 'A''B''C' 的每个组合的编号。例如,如果我在第一行、第三行和第四行中为 'A''C' 设置了 True,则数字等于 3。

预期输出:

   A  B  C
A  3  1  3
B  1  2  2
C  3  2  4

我不知道如何使用 Pandas 实现此目的。也许你也可以告诉我这个交叉表是否有一个特殊的名称。

试试 numpy。是np.inner

arr = df.astype(int).T.to_numpy()
np.inner(arr, arr)

Out[1158]:
array([[3, 1, 3],
       [1, 2, 2],
       [3, 2, 4]])

df_final = pd.DataFrame(np.inner(arr, arr), columns=df.columns, index=df.columns)

Out[1160]:
   A  B  C
A  3  1  3
B  1  2  2
C  3  2  4

添加到@Andy L. 的答案中——您不必将数据帧转换为 numpy:

df=df.astype(int)
res=df.T@df

输出:

   A  B  C
A  3  1  3
B  1  2  2
C  3  2  4