微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从熊猫两列创建共现矩阵?

如何解决如何从熊猫两列创建共现矩阵?

我有一个小数据集,例如:

import pandas as pd
df = pd.DataFrame({'a': [1,2,3,4,5,6,7,8,9,10],'b': [11,22,11,33,44,22]})
df

enter image description here

我想找出 a 列的 b 列值的共现。

我尝试了什么:

df_co = pd.get_dummies(a.a).groupby(a.b).apply(max)
df_co

但这不是一个共现矩阵。所以我也试过这个:

df_co.T.dot(df_co)

这给了我:

enter image description here

这是计算共生矩阵的正确方法吗?

解决方法

您可以使用带有虚拟列的 df.pivot 来表示 count=1

df.assign(v=1).pivot('a','b').fillna(0)
      v               
b    11   22   33   44
a                     
1   1.0  0.0  0.0  0.0
2   0.0  1.0  0.0  0.0
3   1.0  0.0  0.0  0.0
4   0.0  1.0  0.0  0.0
5   0.0  0.0  1.0  0.0
6   1.0  0.0  0.0  0.0
7   0.0  1.0  0.0  0.0
8   0.0  0.0  0.0  1.0
9   1.0  0.0  0.0  0.0
10  0.0  1.0  0.0  0.0

或者,正如@Quang Hoang 建议的那样,尝试 pd.crosstab

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。