创建具有连续字符串计数的矩阵



我有一个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.crosstabreindex来确保具有所有组合:

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

注意。...在此处显示为单词,这是由于您的示例

最新更新