是否有Pandas函数可保留Excel重复列名?求替代手动重命名方法
高效保留Excel重复列名的处理方案
读取时直接保留原始列名
用pandas.read_excel时,先单独读取表头获取原始列名,再用该列名列表重新读取数据,避免自动重命名:
import pandas as pd # 读取表头行(假设表头在第0行) header_row = pd.read_excel("your_file.xlsx", nrows=0) original_cols = header_row.columns.tolist() # 传入原始列名读取完整数据 df = pd.read_excel("your_file.xlsx", header=0, names=original_cols)
这样读取后的DataFrame会完全保留Excel里的重复列名,不会出现A.1、A.2这类自动生成的后缀。
已读取数据的批量恢复
如果已经得到了带自动后缀的列名,可通过解析列名批量恢复原始名称:
# 处理现有df的列名 original_cols = [] for col in df.columns: # 拆分后缀,提取原始名称 original_cols.append(col.rsplit(".", 1)[0] if "." in col else col) df.columns = original_cols
不管重复列有多少个、重复多少次,都能一键还原原始列名。
Melting操作建议
保留重复列名后,执行melting时可通过var_name指定列名标识,value_name存储对应值:
melted_df = df.melt(var_name="original_column", value_name="data_value")
如果需要区分同一列名的不同实例,可以在melt后结合groupby或添加序号,但如果仅需保留原始列名用于分类,直接执行上述代码即可。
内容的提问来源于stack exchange,提问作者Omenamine
相关产品推荐
相关产品推荐

