使用pandas向CSV文件写入数据时如何设置列名
解决方法
追加写入CSV时仅首次写入(文件不存在时)输出表头,后续追加数据跳过表头即可实现完整带列名的CSV文件。你现有代码未设置列名,同时强制关闭了header输出,因此无法生成列名。
修改步骤
- 导入os模块用于判断目标CSV文件是否已存在
- 自定义对应列名,你的数据按顺序共5列:时间戳、开盘价(o)、收盘价(c)、最高价(h)、最低价(l),列名可按需调整
- 写入前判断文件是否存在,动态调整header参数
- 创建DataFrame时指定列名,可选添加
index=False避免写入无用的索引列
修改后代码
import os import json import datetime as dt import pandas as pd def on_message(ws, message): print('Otrzymano wiadomość') print(message) json_message = json.loads(message)#Decoding json price_data = [json_message["data"]["o"]] price_data.append(json_message["data"]["c"]) price_data.append(json_message["data"]["h"]) price_data.append(json_message["data"]["l"]) time_stamp = dt.datetime.now() time_stamp = time_stamp.strftime('%Y-%m-%d %H:%M:%S') col = [time_stamp] col.extend(price_data) df = pd.DataFrame(col).T # 自定义列名 df.columns = ['时间戳', '开盘价', '收盘价', '最高价', '最低价'] filename = str(time_stamp[0:11]) + 'stockdata.csv' # 判断文件是否存在,动态设置header参数 write_header = not os.path.exists(filename) # 写入CSV,index=False取消索引列,不需要可以删除该参数 df.to_csv(filename, mode='a', header=write_header, index=False) print(df)
内容的提问来源于stack exchange,提问作者Dominik Pucuła
相关产品推荐
相关产品推荐

