擅长:python、mysql、java
<p>尝试:</p>
<pre class="lang-py prettyprint-override"><code># if not done already
df.set_index("Person", inplace=True)
res = (df@df.T).stack().reset_index(level=1)
res = res.loc[res["Person"].ne(res.index) & res[0].gt(0)].sort_values(0, ascending=False).groupby(level=0).apply(lambda x: list(x.values))
</code></pre>
<p>产出:</p>
<pre class="lang-py prettyprint-override"><code>>>> res
Person
A [[D, 3], [B, 2], [C, 1], [E, 1]]
B [[A, 2], [C, 1], [D, 1]]
C [[A, 1], [B, 1], [D, 1]]
D [[A, 3], [B, 1], [C, 1], [E, 1]]
E [[A, 1], [D, 1]]
dtype: object
</code></pre>
<p>和您的函数(结果按降序排列):</p>
<pre class="lang-py prettyprint-override"><code>>>> res.loc['C']
[array(['A', 1], dtype=object), array(['B', 1], dtype=object), array(['D', 1], dtype=object)]
</code></pre>