我有一个pandas数据帧,它由两列组成,其中有字符串,如下所示:
word 1 word 2
cat dog
dog mouse
mouse dog
dog dog
dog mouse
mouse ...
我想在python中做的是构建一个矩阵,计算一个单词跟在另一个单词后面的次数,如下所示:
cat dog mouse
cat 0 1 0
dog 0 1 2
mouse 0 1 0
到目前为止,我尝试的是标记化(但这可能不是最好的方法(和计算矩阵相关性(但显然pandas.DataFrame.corr
不适用于字符串(。
你知道如何进行吗?谢谢
您可以使用pandas.crosstab
和reindex
来确保具有所有组合:
import numpy as np
idx = np.unique(df.values.flatten())
(pd.crosstab(df['word 1'], df['word 2'])
.reindex(index=idx, columns=idx, fill_value=0)
)
输出:
word 2 ... cat dog mouse
word 1
... 0 0 0 0
cat 0 0 1 0
dog 0 0 1 2
mouse 1 0 1 0
注意。...
在此处显示为单词,这是由于您的示例