使用pandas垂直拼接CSV文件结果为横向单行该如何解决
问题原因
你使用header=0读取无表头的CSV文件时,pandas会把两个文件的第一行数据识别为列名。由于两个文件的第一行数据(被误判的列名)不一致,concat按列对齐时会把两个文件的内容分别放到不同列下,最终形成横向拼接的错误结果。同时导出时未关闭索引输出,导致结果第一列多出空索引列。
调整后代码
import pandas as pd # 读取无表头CSV,指定header=None,避免把第一行数据识别为表头 data_msft = pd.read_csv("MSFT.csv", header=None, index_col=None) data_adbe = pd.read_csv('ADBE.csv', header=None, index_col=None) # 垂直拼接,ignore_index=True重置行索引避免重复 data = pd.concat([data_msft, data_adbe], ignore_index=True, axis=0, sort=False) # 导出时指定index=False不输出索引列,header=False不输出默认数字表头 data.to_csv("testing.csv", index=False, header=False)
可选补充设置
如果需要为生成的CSV添加自定义表头,可以在concat之后、导出之前添加列名设置:
# 可根据字段实际含义修改对应列名 data.columns = ['期权标识', '正股价格', '行权价格', '期权价格', '预留字段1', '到期日期', '预留字段2', '更新时间', '采集时间']
如果需要保留表头,导出时去掉header=False参数即可。
内容的提问来源于stack exchange,提问作者Ross Demtschyna
相关产品推荐
相关产品推荐

