擅长:python、mysql、java
<p>这是一个简单的线性代数,你用它的转置乘矩阵(你的例子包含字符串,别忘了把它们转换成整数):</p>
<pre><code>>>> df_asint = df.astype(int)
>>> coocc = df_asint.T.dot(df_asint)
>>> coocc
Dop Snack Trans
Dop 4 2 3
Snack 2 3 2
Trans 3 2 4
</code></pre>
<p>如果,如R答案所示,您想重置对角线,可以使用numpy的<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.fill_diagonal.html">^{<cd1>}</a>:</p>
<pre><code>>>> import numpy as np
>>> np.fill_diagonal(coocc.values, 0)
>>> coocc
Dop Snack Trans
Dop 0 2 3
Snack 2 0 2
Trans 3 2 0
</code></pre>