pandas中如何按自定义键合并字符串列的多行数据
Pandas 分组合并字符串列实现方案
你之前调用groupby后结果仍分散为多行,核心原因是没有对分组后的字符串列指定拼接类的聚合规则,仅完成了数据拆分没有做合并计算,正确实现步骤如下:
- 构造示例原始数据表
import pandas as pd # 构建原始示例数据 df = pd.DataFrame({ 'StudentName': ['Adam', 'Mathew', 'Sheldon', 'Albert', 'Angelica', 'Maya', 'Ashley'], 'Class': ['Class I', 'Class II', 'Class I', 'Class I', 'Class II', 'Class II', 'Class III'] })
- 分组聚合核心代码
通过groupby+agg一次性完成字符串拼接、计数两个聚合逻辑,设置as_index=False避免分组键变为索引导致格式错乱:
result = df.groupby(by='Class', as_index=False).agg( # 同组学生姓名用逗号拼接为单个字符串 Student=('StudentName', lambda x: ', '.join(x)), # 统计同组学生数量 Count_of_Students=('StudentName', 'count') )
- 输出结果说明
运行代码后得到的结果完全匹配需求:
- Class I 对应Student值为
Adam, Sheldon, Albert,Count_of_Students为3 - Class II 对应Student值为
Mathew, Angelica, Maya,Count_of_Students为3 - Class III 对应Student值为
Ashley,Count_of_Students为1
补充说明
如果同组内存在重复的学生姓名,可以在拼接逻辑中加去重处理,修改拼接规则为lambda x: ', '.join(x.drop_duplicates())即可,避免重复值出现在拼接结果中。
内容的提问来源于stack exchange,提问作者excelsiro
相关产品推荐
相关产品推荐

