猿问

Pandas - 创建一个计算记录数的对称矩阵

我有一个如下所示的数据框


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 来完成。


浮云间
浏览 144回答 1
1回答

阿晨1998

使用merge with cross join by IDcolumn with crosstabandDataFrame.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  CA  1  1  1B  1  2  2C  1  2  2
随时随地看视频慕课网APP

相关分类

Python
我要回答