我有一个包含2列的数据集,如下所示:
|group| |sequence|
A BX
A X
B SFS
B BCX
B BSS*B1S
A BBX
我想要一些方法来分组和找到每个角色的频率,得到这样的东西:
|group| |char| |freq|
A B 3
A X 3
B S 5
...
最佳答案
您可以使用有效的基于重复的解决方案,然后使用groupby:
from itertools import chain
# Step 1 - flatten your dataframe
df = pd.DataFrame({
'group' : df['group'].repeat(df.sequence.str.len()),'char' : list(chain.from_iterable(df.sequence.tolist()))
})
# Step 2 - filter out characters and groupby on `group`
df[df.char.str.isalpha()].groupby(['group','char']).size().reset_index(name='freq')
group char freq
0 A B 3
1 A X 3
2 B B 3
3 B C 1
4 B F 1
5 B S 5
6 B X 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。