Pandas读取CSV时索引列名称引发列名错位问题
问题根源
列名整体偏移错位是因为CSV指定表头行的列数比实际数据行少1位:表头没有为第一列的时间戳预留对应字段名,pandas自动将第一列时间戳识别为索引后,会将表头的所有字段名依次匹配到索引后的后续列,最终出现列名整体右移、值和标签不对应的问题。
修复方案
在pd.read_csv()中新增index_col=0参数,明确告知pandas文件第1列(0索引位置)为索引列,读取时会自动对齐表头与数据列的映射关系。修复后代码如下:
import pandas as pd file = '507_002117.csv' print(file) # 指定header位置、第0列为索引,同时自动解析时间格式 df = pd.read_csv(file, header=6, index_col=0, parse_dates=[0]) # 原切片取前11列是包含了未拆分的索引列,拆分索引后按需调整切片范围即可 df = df.iloc[:, :10] print(df.head(5)) print(df['AlongTrack'])
注意事项
- 如果不需要自动将时间戳解析为datetime类型,可以去掉
parse_dates=[0]参数 - 调整
iloc切片前可以先执行print(open(file).readlines()[6])打印第7行表头内容,检查表头是否存在多余分隔符、空字段等格式问题,确认实际列数后再调整切片范围,避免多切/漏切列
内容的提问来源于stack exchange,提问作者Erik Rasmussen
相关产品推荐
相关产品推荐

