我有一个如下所示的数据框
ID | Value
1 | A
1 | B
1 | C
2 | B
2 | C
我想创建一个基于值的对称矩阵:
A B C
A 1 1 1
B 1 2 2
C 1 2 2
这基本上表明有多少人同时具有这两个值 (v1,v2)。我目前正在使用 for 循环来扫描数据帧的每个组合,但想知道是否有更简单的方法使用 pandas 来完成此操作。
最佳答案
使用带有 crosstab
的 ID
列交叉连接的合并和 DataFrame.rename_axis
用于删除索引和列名称:
df = pd.merge(df, df, on='ID')
df = pd.crosstab(df['Value_x'], df['Value_y']).rename_axis(None).rename_axis(None, axis=1)
print (df)
A B C
A 1 1 1
B 1 2 2
C 1 2 2
关于python - Pandas - 创建一个对称矩阵来计算记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55065199/