Polars read_excel读取指定列时错误添加列名后缀问题咨询
问题分析与解决
这不是操作失误,是Polars v1.12.0中read_excel的表头去重机制导致的设计行为,而非Bug。
原因
Polars读取Excel时,会先扫描整个工作表的所有列表头进行全局去重,而不是仅针对你指定的columns范围。哪怕你选的列表头本身唯一,但只要该表头在你选中区域之前的列里出现过,Polars就会基于全局的重复次数给列名加后缀。比如你提到的那个被加_3的列头,就是因为它在前面已经出现过两次,当前选中的是第三次出现的同名表头。
解决办法
- 先读全表再筛选列:如果数据量不大,可以先读取整个工作表,再筛选需要的列,这样能保留原始表头:
df = pl.read_excel("test.xlsx", sheet_name="test", has_header=True) # 按列范围筛选(AE到AS对应Excel列的30到49索引) df = df.select(pl.col("AE":"AS")) - 手动指定列名:如果你明确知道目标列的正确表头,可以用
new_columns参数直接覆盖自动生成的列名:# 替换成你实际的19个列名 target_columns = ["列A", "列B", "列C", ..., "列S"] df = pl.read_excel( "test.xlsx", sheet_name="test", has_header=True, columns=list(range(30, 49)), new_columns=target_columns ) - 升级Polars版本:后续版本可能优化了这个逻辑,只针对选中的列进行表头去重,你可以尝试升级到最新版Polars再测试。
内容的提问来源于stack exchange,提问作者Andi
相关产品推荐
相关产品推荐

