如何高效实现pandas DataFrame列值合并到单个单元格(含分组场景)
场景1:按A、B列分组后拼接组内值
实现代码
import pandas as pd # 构造测试数据 df = pd.DataFrame({ 'A': [1,1,1,1], 'B': [1,1,1,2], 'l1': [2,3,1,2], 'l2': [3,5,2,7], 'l3': [4,7,9,8] }) # 分组聚合实现拼接 result = df.groupby(['A', 'B'], as_index=False).agg( lambda col: ','.join(col.astype(str)) )
逻辑说明
groupby指定分组键A、B,as_index=False避免分组键转为索引- 聚合函数先将列值转为字符串类型,再用逗号拼接,避免数值类型直接拼接报错
- 基于pandas原生矢量化运算实现,处理效率远高于手动循环遍历
场景2:无分组键,全列所有值拼接为单行
实现代码
# 构造测试数据 df2 = pd.DataFrame({ 'l1': [2,3,1,2], 'l2': [3,5,2,7], 'l3': [4,7,9,8] }) # 全列聚合后转单行DataFrame result2 = df2.agg(lambda col: ','.join(col.astype(str))).to_frame().T
逻辑说明
- 直接对全列执行聚合拼接逻辑,不需要分组
to_frame().T将聚合得到的Series转为预期的单行DataFrame格式
扩展说明
如果需要保留数值类型不需要转字符串拼接,可将拼接逻辑替换为lambda col: list(col)或者lambda col: tuple(col),直接将同组/同列值存入列表/元组格式的单元格。
内容的提问来源于stack exchange,提问作者Cranjis
相关产品推荐
相关产品推荐

