Python 从一列创建布尔矩阵

Python 从一列创建布尔矩阵,python,matrix,pandas,boolean,Python,Matrix,Pandas,Boolean,我一直在寻找答案,但我不知道要寻找什么,所以我会在这里问。我是一个python初学者和熊猫爱好者 我有一个数据集,我想从一列中生成一个矩阵。如果列及其转置状态中的值相等,则矩阵的值应为1,如果不相等,则为0 输入: id x1 A 1 B 3 C 1 D 5 输出: A B C D A 1 0 1 0 B 0 1 0 0 C 1 0 1 0 D 0 0 0 1 我想对六个不同的列执行此操作,并将结果矩阵添加到一个矩

我一直在寻找答案,但我不知道要寻找什么,所以我会在这里问。我是一个python初学者和熊猫爱好者

我有一个数据集,我想从一列中生成一个矩阵。如果列及其转置状态中的值相等,则矩阵的值应为1,如果不相等,则为0

输入:

  id x1
   A  1
   B  3
   C  1
   D  5
输出:

  A  B  C  D

A 1  0  1  0

B 0  1  0  0

C 1  0  1  0

D 0  0  0  1

我想对六个不同的列执行此操作,并将结果矩阵添加到一个矩阵中,其中的值范围为0-6,而不仅仅是0-1。

部分原因是目前还没有方便的笛卡尔连接(吹口哨和看向别处),我倾向于降到numpy级别,在需要这样做时使用广播。瞧,因为我们可以这样做

>>> df.x1.values - df.x1.values[:,None]
array([[ 0,  2,  0,  4],
       [-2,  0, -2,  2],
       [ 0,  2,  0,  4],
       [-4, -2, -4,  0]])
我们能做到

>>> pdf = pd.DataFrame(index=df.id.values, columns=df.id.values, 
                       data=(df.x1.values == df.x1.values[:,None]).astype(int))
>>> pdf
   A  B  C  D
A  1  0  1  0
B  0  1  0  0
C  1  0  1  0
D  0  0  0  1

您的问题不清楚,您能否对其进行编辑,并提供一个输入/输出示例和一些解释?