这是一个简单的线性代数,您将矩阵与其转置相乘(您的示例包含字符串,请不要忘记将它们转换为整数):
>>> df_asint = df.astype(int)>>> coocc = df_asint.T.dot(df_asint)>>> coocc Dop Snack TransDop 4 2 3Snack 2 3 2Trans 3 2 4
如果像R答案中一样,如果您想重设对角线,则可以使用numpy的
fill_diagonal:
>>> import numpy as np>>> np.fill_diagonal(coocc.values, 0)>>> coocc Dop Snack TransDop 0 2 3Snack 2 0 2Trans 3 2 0



