0

0

Pandas处理Excel重复列名:如何精确选取第二列或后续数据

花韻仙語

花韻仙語

发布时间:2025-11-03 11:14:01

|

208人浏览过

|

来源于php中文网

原创

Pandas处理Excel重复列名:如何精确选取第二列或后续数据

在处理包含重复列名的excel文件时,pandas的`read_excel`函数会自动为重复列名添加`.1`, `.2`等后缀进行区分。本文将详细介绍这一机制,并指导如何利用这些自动生成的后缀精确地选取和处理重复列中的第二列或后续数据,从而避免只获取第一列数据的问题,并演示如何将处理后的数据导出为tsv文件。

理解Pandas对重复列名的处理机制

在数据分析和处理过程中,我们经常会遇到从外部数据源(尤其是Excel文件)读取数据的情况。然而,某些Excel文件可能由于设计原因包含重复的列名。当使用Pandas的pd.read_excel()函数读取这类文件时,Pandas并不会简单地忽略重复列,而是会智能地对它们进行重命名,以确保每个列名都是唯一的。

具体来说,Pandas会保留第一个出现的列名,并为后续出现的同名列添加一个递增的数字后缀。例如,如果Excel文件中存在三个名为“ColumnA”的列,Pandas读取后,它们在DataFrame中的列名将变为“ColumnA”、“ColumnA.1”和“ColumnA.2”。这种自动重命名机制是解决重复列名问题的关键。

访问重复列中的特定数据

要访问重复列中的特定数据(例如,第二个或第三个同名列的数据),我们不再使用原始的列名,而是使用Pandas自动生成的带有后缀的新列名。

示例:处理AISC形状数据库Excel文件

以下是一个具体的例子,演示如何从一个包含重复列名的AISC形状数据库Excel文件中提取第二列的特定数据,并将其导出为制表符分隔值(TSV)文件。

首先,我们需要加载必要的库并从指定URL下载Excel文件:

import pandas as pd
import requests
from io import BytesIO

# AISC形状数据库的URL
url = "https://www.aisc.org/globalassets/product-files-not-searched/" \
      "manuals/aisc-shapes-database-v16.0.xlsx"

# 通过requests获取文件内容,并使用BytesIO使其可被pandas读取
response = requests.get(url)
data = BytesIO(response.content)

# 读取Excel文件,指定sheet_name
# 注意:sheet_name可能需要根据实际文件进行调整
df = pd.read_excel(data, sheet_name="Database v16.0")

# 打印DataFrame的前几行和所有列名,以便观察Pandas如何处理重复列名
print("DataFrame预览:")
print(df.head())
print("\n所有列名:")
print(df.columns.tolist())

运行上述代码后,您会发现df.columns.tolist()的输出中包含了AISC_Manual_Label、AISC_Manual_Label.1等类似的列名,以及h, in、h.1和b, in、b.1等列名。这正是Pandas自动处理重复列名的结果。

Krea AI
Krea AI

多功能的一站式AI图像生成和编辑平台

下载

假设我们希望获取第二列的AISC_Manual_Label、h, in(高度)和b, in(宽度)数据。根据Pandas的重命名规则,这些列名将是AISC_Manual_Label.1、h.1和b.1。

选取并导出所需数据

现在,我们可以通过直接指定这些带有后缀的列名来选取数据:

# 选取我们需要的第二组重复列的数据
# 请根据实际的df.columns输出调整列名
selected_columns = ["AISC_Manual_Label.1", "h.1", "b.1"]
subset_df = df[selected_columns]

# 打印选取的数据子集预览
print("\n选取数据子集预览:")
print(subset_df.head())

# 将选取的数据导出为TSV文件
output_filename = "profiles_second_set.txt"
subset_df.to_csv(output_filename, sep="\t", index=False)

print(f"\n数据已成功导出到 {output_filename}")

在这个例子中,subset_df将包含来自Excel文件中第二组AISC_Manual_Label、h, in和b, in的数据。to_csv()函数结合sep="\t"参数,可以方便地将DataFrame导出为制表符分隔的文件,index=False则避免将DataFrame的索引写入文件。

注意事项与总结

  1. 检查列名: 在处理任何可能包含重复列名的Excel文件时,强烈建议在读取数据后立即打印df.columns.tolist()来查看Pandas实际生成的列名。这是确定正确列名(尤其是带后缀的列名)的关键步骤。
  2. 后缀规则: Pandas的后缀从.1开始,表示原始列名的第二次出现,.2表示第三次出现,依此类推。
  3. 避免迭代: 对于这种需求,通常不需要使用df.iterrows()进行行迭代。直接通过列名选择DataFrame的子集是更高效、更“Pandas风格”的做法。
  4. df.duplicated()的用途: df.duplicated()方法主要用于查找和处理DataFrame中重复的,而不是重复的列名。因此,它不适用于解决本教程中描述的重复列名问题。

通过理解Pandas处理重复列名的机制,并利用其自动生成的后缀,我们可以精确地访问Excel文件中任意位置的重复列数据,从而高效地完成数据提取和转换任务。

相关专题

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

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

53

2025.12.04

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

352

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2075

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

347

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

255

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

324

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

410

2023.10.16

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

405

2023.10.16

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 12.8万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号