Pandas按逗号拆分单元格为多行并实现分组计数的优化方法
解决方案
优化逻辑
- 将拆分、去空格的重复逻辑封装为可复用的通用函数,所有字符清洗规则统一管理,修改时只需要调整一处即可
- 用列表配置所有需要拆分的字段,后续新增拆分字段时只需要修改列表内容,不需要重复编写处理逻辑
- 拆分过程同步完成空白字符清理,不需要拆分结束后单独对每列执行去空格操作,避免出现字段遗漏的情况
完整实现代码
import pandas as pd # 示例数据 data = {'place':["US", "Japan", "UK", "Japan", "UK"], 'colour':["red", "yellow", "blue", "red", "green"], 'fruit1':["organge, apple", "apple", "organge, dragon fruit, watermelon", "organge, others", "others"], 'fruit2':["apple, organge", "others", "watermelon, dragon fruit, organge", "watermelon", "others"]} df = pd.DataFrame(data) # 定义拆分+去空格通用函数,兼容各类异常空白字符 def split_strip_explode(series, sep=','): return series.str.split(sep).explode().str.strip() # 配置需要拆分的字段,新增拆分字段仅需修改此处 need_split_cols = ['fruit1', 'fruit2'] # 逐列执行拆分处理 for col in need_split_cols: df[col] = split_strip_explode(df[col]) # 分组计数 result = df.groupby(need_split_cols, as_index=False).size().rename(columns={'size': 'counts'}) print(result)
运行上述代码得到的输出与你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者codedancer
相关产品推荐
相关产品推荐

