Pandas多行数据合并为单行多列的语法问题
Pandas分组后多列合并为逗号分隔字符串
问题场景
原始数据:
column1 column2 column3 1 a Y 1 b Z 2 d Z 2 c Y
需要按column1分组,将column2和column3的对应值分别合并为逗号分隔的字符串,期望输出:
column1 column2 column3 1 a, b Y, Z 2 d, c Z, Y
解决方案
单列合并的方法可行,但多列合并时需要改用agg方法(而非apply),因为agg会对每一列独立执行合并操作:
- 构造示例数据(已有DataFrame可跳过此步骤):
import pandas as pd df = pd.DataFrame({ 'column1': [1, 1, 2, 2], 'column2': ['a', 'b', 'd', 'c'], 'column3': ['Y', 'Z', 'Z', 'Y'] })
- 执行分组合并:
result = df.groupby('column1').agg(', '.join).reset_index()
- 最终输出:
column1 column2 column3 0 1 a, b Y, Z 1 2 d, c Z, Y
原方法无效的原因
当对多列使用groupby(...).apply(', '.join)时,Pandas会将整个分组的DataFrame对象传入join函数,而非逐列处理,导致无法正确生成逗号分隔的字符串。而agg方法会遍历每一列,对列内所有值独立执行', '.join,完全匹配需求。
内容的提问来源于stack exchange,提问作者T-0
相关产品推荐
相关产品推荐

