行和列中具有相同变量的交叉表
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
我有以下数据框:
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