擅长:python、mysql、java
<p>我有另一个解决办法。你知道吗</p>
<ol>
<li>加入<code>BookID</code></li>
<li>使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.crosstab.html" rel="nofollow noreferrer">^{<cd2>}</a>创建邻接矩阵</li>
<li>按行计算计数,不包括行的作者。你知道吗</li>
</ol>
<hr/>
<pre><code>>>> df_merge = df.merge(df, on='BookID')
>>> ctdf = pd.crosstab(df_merge.Author_x, df_merge.Author_y, aggfunc='max', values=[1] * len(df_merge)).fillna(0)
>>> ctdf
Author_y Alex Jenna John Mary Max
Author_x
Alex 1.0 1.0 1.0 1.0 1.0
Jenna 1.0 1.0 1.0 0.0 0.0
John 1.0 1.0 1.0 0.0 0.0
Mary 1.0 0.0 0.0 1.0 1.0
Max 1.0 0.0 0.0 1.0 1.0
>>> ctdf.apply(lambda x: sum([*x]) - 1)
Author_y
Alex 4.0
Jenna 2.0
John 2.0
Mary 2.0
Max 2.0
dtype: float64
</code></pre>