如何正确将两行数据的Excel文件转换为无行列号的CSV文件?
解决Excel转CSV时的数据丢失/异常问题
你的问题根源在于pandas默认会把Excel的第一行识别为表头(列名),而非普通数据行。当你的Excel只有两行数据时,第一行被当成了DataFrame的列名,第二行才是实际数据,这就导致了两种输出问题:
- 设置
header=False时,只会输出第二行数据,第一行(被当成列名)被丢弃 - 不设置
header参数时,会把原第一行(列名)和第二行(数据)都输出,你看到的“随机的1”其实就是原第一行的数据被当作列名打印出来了
最优解决方案是读取Excel时明确告诉pandas不要将任何行作为表头,把所有行都当作数据处理:
def excel_to_csv(excel_file, csv_file): # 读取Excel,header=None表示不将第一行作为表头,所有行均为数据 df = pd.read_excel(excel_file, header=None) # 写入CSV时禁用表头输出(此时DataFrame的表头是默认的0、1...序列,不需要输出) df.to_csv(csv_file, index=False, header=False)
这样修改后,Excel里的两行数据会完整写入CSV文件,不需要添加空行的临时方案。
如果你的场景是第一行确实是表头、第二行是数据,需要同时输出表头和数据,那只需要调整写入时的参数:
def excel_to_csv(excel_file, csv_file): df = pd.read_excel(excel_file) # 默认将第一行作为表头 df.to_csv(csv_file, index=False) # 保留表头输出(header=True是默认值,可以省略)
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

