熊猫-创建一个对称矩阵来计算记录数

时间:2019-03-08 14:26:09

标签: python pandas

我有一个看起来像下面的数据框

ID  |  Value
1   |  A
1   |  B
1   |  C
2   |  B
2   |  C

我想基于Value创建一个对称矩阵:

    A   B  C
 A  1   1  1
 B  1   2  2
 C  1   2  2

这基本上表明有多少人同时拥有两个值(v1,v2)。我目前正在使用for循环来扫描每个组合的数据框,但想知道是否有使用熊猫的简便方法。

1 个答案:

答案 0 :(得分:3)

ID列与crosstabDataFrame.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