Python 从一列创建布尔矩阵
我一直在寻找答案,但我不知道要寻找什么,所以我会在这里问。我是一个python初学者和熊猫爱好者 我有一个数据集,我想从一列中生成一个矩阵。如果列及其转置状态中的值相等,则矩阵的值应为1,如果不相等,则为0 输入: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 我想对六个不同的列执行此操作,并将结果矩阵添加到一个矩
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
您的问题不清楚,您能否对其进行编辑,并提供一个输入/输出示例和一些解释?