问题描述
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
我想找出 a 列的 b 列值的共现。
我尝试了什么:
df_co = pd.get_dummies(a.a).groupby(a.b).apply(max)
df_co
但这不是一个共现矩阵。所以我也试过这个:
df_co.T.dot(df_co)
这给了我:
这是计算共生矩阵的正确方法吗?
解决方法
您可以使用带有虚拟列的 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