我有以下 2 列数据框:
交易编号 | 商品编号 |
---|---|
1 | 50 |
3 | 57 |
1 | 57 |
1 | 54 |
2 | 52 |
2 | 54 |
我想创建一个大小为 len(item_id) x len(item_id) 的平方对角矩阵,这样对于每个项目 id,我们都有一个向量,其中每个条目表示该项目 id 与另一个项目 id 共享事务的次数.
在我们的示例中,我想要以下结果:
50 52 54 57
50 1 0 1 1
52 0 1 1 0
54 1 1 2 1
57 1 0 1 2
健全性检查可以是对角线:条目 (i, i) 应该具有其数量级为第 i 的项目 id 总共出现的次数。生成的矩阵也应该是对角的。
我尝试使用的几个函数是 pd.get_dummies() 和 groupby() 但没有结果。
试试这个:
ndf = (df.set_index('transaction id')['item id']
.astype(str)
.str.get_dummies()
.groupby(level=0).sum())
ndf.T.dot(ndf)
输出:
50 52 54 57
50 1 0 1 1
52 0 1 1 0
54 1 1 2 1
57 1 0 1 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句