为何Pandas read_csv自动将首列设为索引?请求解方案
解决Pandas读取CSV时首列被自动设为索引的问题
核心参数纠正
你尝试使用的column_index不是pd.read_csv的有效参数,正确控制索引列的参数是index_col。
分步解决方案
- 确认文件结构:由于你指定了
header=1,意味着CSV文件的第2行(0起始索引为1)会被作为列名。检查这一行的首列是否有列名(比如是否为空),如果首列列名缺失,Pandas会默认将其当作索引列处理。 - 强制关闭索引推断:确保读取时明确设置
index_col=False,这个参数会强制Pandas不将任何列设为索引,所有列都作为普通数据列:dfSensordata = pd.read_csv(fileFolder + filename + ext, header=1, sep=',', index_col=False) - 显式指定列名(推荐):如果文件的列名行存在异常(比如首列无名称),可以手动指定所有列名,确保首列被识别为普通列:
# 根据你的实际列数和名称修改 custom_cols = ["Time", "Sensor_Value_1", "Sensor_Value_2"] dfSensordata = pd.read_csv( fileFolder + filename + ext, header=1, sep=',', index_col=False, names=custom_cols ) - 补救方法(若已错误设为索引):如果读取后首列已经变成索引,可以重置索引并恢复为普通列:
dfSensordata = dfSensordata.reset_index().rename(columns={'index': 'Time'})
排查步骤
如果上述方法无效,先读取原始数据确认结构,避免因header设置错误导致的问题:
# 读取全部数据,不指定header temp_df = pd.read_csv(fileFolder + filename + ext, sep=',') print(temp_df.head())
通过输出确认哪一行是真正的列名,以及首列的实际内容,再调整header参数。
内容的提问来源于stack exchange,提问作者Bokyung Seo
相关产品推荐
相关产品推荐

