<p>您可以通过<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.split.html" rel="nofollow noreferrer">^{<cd2>}</a><code>resumo</code>列创建另一个<code>DataFrame</code>并通过<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.join.html" rel="nofollow noreferrer">^{<cd4>}</a>添加到原始列,然后使用<code>groupby</code>和<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.GroupBy.size.html" rel="nofollow noreferrer">^{<cd6>}</a>进行计数:</p>
<pre><code>s = (df.pop('resumo').str.split(',', expand=True)
.stack()
.reset_index(level=1, drop=True)
.rename('resumo'))
df = df.join(s).groupby(['nome','tipo','resumo']).size().reset_index(name='count')
print (df)
nome tipo resumo count
0 CÉSAR MESSIAS AP Desvio de verbas públicas 1
1 CÉSAR MESSIAS INQ Desvio de verbas públicas 1
2 FLAVIANO MELO AP Gestão fraudulenta 1
3 FLAVIANO MELO AP Peculato 1
4 FLAVIANO MELO INQ Prestação de contas rejeitada 1
</code></pre>
<p>如果要将<code>Counter</code>解决方案与上一个解决方案一起使用:</p>
<pre><code>s = df.dropna().groupby(['nome', 'tipo']).resumo.agg(', '.join).str.split(', ').agg(Counter)
print (s)
nome tipo
CÉSAR MESSIAS AP {'Desvio de verbas públicas': 1}
INQ {'Desvio de verbas públicas': 1}
FLAVIANO MELO AP {'Peculato': 1, 'Gestão fraudulenta': 1}
INQ {'Prestação de contas rejeitada': 1}
Name: resumo, dtype: object
df2 = (pd.DataFrame(s.values.tolist(), index=s.index)
.stack()
.astype(int)
.reset_index(name='count')
.rename(columns={'level_2':'resumo'}))
print (df2)
nome tipo resumo count
0 CÉSAR MESSIAS AP Desvio de verbas públicas 1
1 CÉSAR MESSIAS INQ Desvio de verbas públicas 1
2 FLAVIANO MELO AP Gestão fraudulenta 1
3 FLAVIANO MELO AP Peculato 1
4 FLAVIANO MELO INQ Prestação de contas rejeitada 1
</code></pre>