如何用pandas读取CSV时忽略表头空格,解决usecols匹配失败问题
解决CSV表头带空格时指定列读取的问题
直接给你几个靠谱的解决方案:
方法1:先处理表头再精准读取
先读取第一行表头,把每个列名的前后空格去掉,建立处理后列名与原始列名的映射,再用原始列名读取目标列:
import pandas as pd # 读取表头行 header = pd.read_csv('datafiles/file2.csv', nrows=0).columns # 构建处理后列名到原始列名的映射 header_map = {col.strip(): col for col in header} # 通过映射找到原始列名,读取目标列 asd = pd.read_csv('datafiles/file2.csv', nrows=1, usecols=[header_map['Name']])
方法2:修正usecols的lambda写法
你之前的lambda写法有两处错误:一是用x.strip() in "Name"会判断字符是否在字符串里,而非列名匹配;二是逻辑有误导致迭代报错。正确的筛选写法如下:
import pandas as pd asd = pd.read_csv( 'datafiles/file2.csv', nrows=1, usecols=lambda x: x.strip() == 'Name' # 判断处理后的列名是否为目标名称 )
方法3:读取后统一清理列名
如果需要批量处理多个带空格的表头,可以先完整读取数据,再统一去掉所有列名的前后空格,之后直接用目标列名提取:
import pandas as pd df = pd.read_csv('datafiles/file2.csv', nrows=1) # 移除所有列名的前后空格 df.columns = df.columns.str.strip() # 现在直接用'Name'提取目标列 asd = df[['Name']]
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

