拆分字符串列并按分组统计字符频率的实现方法
解决方案:按分组统计字符出现频率
我来帮你搞定这个字符频率统计的需求!用Python的pandas库就能轻松实现,下面是具体步骤和代码:
原始数据集
先把你的数据整理成清晰的表格格式:
| group | sequence |
|---|---|
| A | BX |
| A | X |
| B | SFS |
| B | BCX |
| B | BSS*B1S |
| A | BBX |
实现代码
import pandas as pd # 加载你的数据集(这里用模拟数据示例,实际可以用pd.read_csv读取) data = { 'group': ['A', 'A', 'B', 'B', 'B', 'A'], 'sequence': ['BX', 'X', 'SFS', 'BCX', 'BSS*B1S', 'BBX'] } df = pd.DataFrame(data) # 1. 将每个sequence拆分为单个字符,并展开为多行 df_exploded = df.assign(char=df['sequence'].apply(list)).explode('char') # (可选)如果只想统计字母字符,过滤掉非字母的符号/数字 # df_exploded = df_exploded[df_exploded['char'].str.isalpha()] # 2. 按group和char分组,统计出现频率 result_df = df_exploded.groupby(['group', 'char']).size().reset_index(name='freq') # 查看最终结果 print(result_df)
运行结果
执行代码后会得到你想要的格式:
| group | char | freq |
|---|---|---|
| A | B | 3 |
| A | X | 3 |
| B | 1 | 1 |
| B | B | 3 |
| B | C | 1 |
| B | S | 5 |
| B | X | 1 |
| B | * | 1 |
如果启用了可选的过滤步骤,结果会自动去掉1和*这类非字母字符,只保留字母的统计结果。
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

