擅长:python、mysql、java
<p>我们可以使用<a href="https://stackoverflow.com/a/51752361/9081267">this</a>函数将字符串取消到行。你知道吗</p>
<p>之后,我们将<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.pivot_table.html" rel="nofollow noreferrer">^{<cd1>}</a>与<code>aggfunc=len</code>一起使用:</p>
<pre><code>df = explode_str(df, 'Disease', ' & ')
print(df)
Patients Disease
0 Luke Cooties
1 Nigel Dragon Pox
2 Sarah Greycale
2 Sarah Cooties
</code></pre>
<hr/>
<pre><code>df.pivot_table(index='Patients', columns='Disease', aggfunc=len)\
.fillna(0).reset_index()
Disease Patients Cooties Dragon Pox Greycale
0 Luke 1.0 0.0 0.0
1 Nigel 0.0 1.0 0.0
2 Sarah 1.0 0.0 1.0
</code></pre>
<hr/>
<p>链接答案中使用的函数:</p>
<pre><code>def explode_str(df, col, sep):
s = df[col]
i = np.arange(len(s)).repeat(s.str.count(sep) + 1)
return df.iloc[i].assign(**{col: sep.join(s).split(sep)})
</code></pre>