擅长:python、mysql、java
<p>这里有两种不同的呈现结果的方式。在</p>
<p>对字符串应用<code>groupby.sum</code>将它们串联起来,然后我们可以应用<code>pd.value_counts</code>。在</p>
<pre><code>df = pd.DataFrame({'group': ['A', 'A', 'B', 'B', 'B', 'A'],
'sequence': ['BX', 'X', 'SFS', 'BCX', 'BSS*B1S', 'BBX']})
res = df.groupby('group')['sequence'].sum().map(list).apply(pd.value_counts)\
.fillna(0).astype(int).reset_index()
res = res.loc[:, res.columns.str.isalpha()]
print(res)
# group B C F S X
# 0 A 3 0 0 0 3
# 1 B 3 1 1 5 1
res2 = pd.melt(res, id_vars=['group']).sort_values(['group', 'variable'])
res2 = res2[res2['value'] != 0].set_index(['group', 'variable'])
# value
# group variable
# A B 3
# X 3
# B B 3
# C 1
# F 1
# S 5
# X 1
print(res2)
</code></pre>
<hr/>
<p>使用<code>collections.Counter</code>可以实现更有效的变化:</p>
^{pr2}$