如何将同名列的 DataFrame 值合并为列表

夏伟同学_5648

夏伟同学_5648

2026-08-01

845人浏览

原创

如何将同名列的 DataFrame 值合并为列表

本文介绍如何在 pandas 中处理重命名后出现的重复列名(如多个列被重命名为同一名称),并将其对应行值聚合为列表,避免数据丢失,同时保持原始行结构。

本文介绍如何在 pandas 中处理重命名后出现的重复列名(如多个列被重命名为同一名称),并将其对应行值聚合为列表,避免数据丢失,同时保持原始行结构。

当使用 df.rename(columns=names) 将多个原始列映射到相同列名(如 "a_1", "a_2", "a_3" 全部重命名为 "a")时,Pandas 会保留重复列名,形成具有非唯一列索引的 DataFrame。此时直接按列名访问(如 df2['a'])仅返回第一个 "a" 列,其余被隐式忽略——这正是我们需要聚合的根本原因。

正确解法是利用 列名作为分组依据,对每组同名列执行行内聚合。由于 groupby 默认按行(axis=0)操作,而我们要对“相同列名下的多列”进行横向聚合(即每行中所有名为 'a' 的列值合并为一个列表),最简洁高效的方式是:

  1. 转置 DataFrame:使原列变为行索引,原行变为列,从而将重复列名暴露为索引层级;
  2. 按索引层级分组:使用 groupby(level=0) 按第一级索引(即原列名)分组;
  3. 逐组聚合:对每组(如所有 'a' 列)应用自定义函数,过滤空字符串(x != ''),再转为列表;
  4. 转置回原结构:恢复行列方向,得到目标格式。
result = df2.T.groupby(level=0).agg(lambda x: x[x != ''].tolist()).T

✅ 输出结果:

MaxClaw
MaxClaw

一款AI工具,主要用于MiniMax推出的云端智能体助手,基于OpenClaw打造,24小时在线,适合需要提升相关任务效率的用户。

下载
        a   b    c
0     [x]  []  [z]
1  [x, y]  []  [z]

⚠️ 注意事项:

  • 该方法依赖 df2.columns.is_unique == False,即必须存在重复列名;若列名已去重,需先手动构造重复列(如 df2 = df2.rename(columns=names) 后不自动去重);
  • 空值处理:示例中用 x != '' 过滤空字符串;如需处理 NaN,应改用 x.notna() 或 x.astype(bool) 配合 x.dropna();
  • 性能提示:对大型 DataFrame,T.groupby(...).agg(...).T 是向量化操作,远优于 apply + 循环,推荐优先使用。

总结:Pandas 不支持原生“多列同名自动聚合”,但通过转置→按名分组→聚合→转回三步,可优雅、高效地实现按列名合并行值为列表的目标,是处理此类重命名聚合问题的标准范式。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

2025.12.04

320

15

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

2026.01.31

232

21

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

2026.04.13

451

25

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

2026.10.08

40

20

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

140

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

140

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

100

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

100

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

120

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习