擅长:python、mysql、java
<p>这里有一个满嘴的:</p>
<pre><code>emails = df['EmailAdds'].str.split(';').explode()
df = df.join(
emails.str.split('@', expand=True) \
.fillna('') \
.groupby(level=0) \
.agg(
{ 0: ' '.join,
1: lambda x: ' '.join(set(x))}
).rename(columns=['EmailAdds_roots', 'EmailAdds_domains'].__getitem__)
)
</code></pre>
<p>结果:</p>
<pre><code> EmailAdds Subject \
0 pamelasilvera@gmail.com; adarandall@gmail.com;... Report submission
1 indiejesse.d@gmail.com Meeting update
EmailAdds_roots EmailAdds_domains
0 pamelasilvera adarandall larryjacob gmail.com orange.com
1 indiejesse.d gmail.com
</code></pre>
<hr/>
<p>另一种更具可读性的版本是:</p>
<pre><code>emails = df['EmailAdds'].str.split(';').explode() \
.str.split('@', expand=True).fillna('') \
.groupby(level=0)
df['EmailAdds_roots'] = emails[0].agg(list).str.join(' ')
df['EmailAdds_domains'] = emails[1].unique().str.join(' ')
</code></pre>