如何将含空首列的CSV转为规范格式?自定义函数失效求助
解决首列为空表头的CSV转换问题
问题场景
输入的CSV首列没有表头,数据行的首列是索引值,需要把这一列设为正式的索引列,输出符合规范的CSV。示例输入如下:
,features,corr_dropped,var_dropped,uv_dropped 0,AghEnt,False,False,False
目标是让输出的CSV里,原首列的数值作为索引列,对应表头为空(和给出的示例表格格式一致)。
原代码失效原因
原代码用pd.read_table读取文件时,没指定把第一列当作索引;而且to_csv时设置了index=False,直接跳过了索引列的写入,导致输出和输入完全一样。
修正后的实现代码
import os import pandas as pd def convert_file(): input_file = "../input.csv" output_file = os.path.splitext(input_file)[0] + "_converted.csv" # 读取时指定第1列为索引,header=0表示用第一行做表头 df = pd.read_csv(input_file, index_col=0, header=0) # 写入时保留索引,索引对应的表头会自动为空字符串,符合需求 df.to_csv(output_file, header=True, sep=',')
关键调整说明
- 用
pd.read_csv替代pd.read_table(两者功能相近,但read_csv更适配CSV文件场景),通过index_col=0参数直接把第一列设为DataFrame的索引。 - 去掉
to_csv里的index=False参数,默认会保留索引列,此时索引对应的表头会是空字符串,正好匹配目标格式的空首列表头。 - 如果你的Pandas版本较旧,出现表头显示异常的话,可以手动设置索引名称为空:
df.index.name = '',再执行写入操作。
内容的提问来源于stack exchange,提问作者edche
相关产品推荐
相关产品推荐

