javy1688 2022-01-29 08:55 采纳率: 100%
浏览 130
已结题

PYTHON 将数据分类写入CSV

我获取一组股票代码后,我需要写入CSV文件,麻烦给写一下


# coding=utf-8
from __future__ import print_function, absolute_import
from gm.api import *

data = history(symbol='SHSE.601601', frequency='1d', start_time='2022-01-26',  end_time='2022-01-28', fields='open, close, low, high, eob', adjust=ADJUST_PREV, df=True)
print(data)

获取到的数据输出的结果是

img

我想把它写入CSV,
直接用data.to_csv('601601.csv') 有问题,
估计要调用pands输出csv,这里不会
日期转换麻烦,可以不用转换

img

  • 写回答

2条回答 默认 最新

  • 广大菜鸟 2022-01-29 10:21
    关注
    import  datetime
    from pandas import  DataFrame, concat
    # 任何其他时区时间转化成北京时间(UTC+08:00)或其他区时间
    def india_to_local(india_time_str,india_format = '%Y-%m-%d %H:%M:%S+08:00'): 
        india_dt = datetime.datetime.strptime(india_time_str, india_format)
        local_dt = india_dt + datetime.timedelta(hours=2, minutes=30)
        local_format = "%Y/%m/%d"   # "%Y-%m-%d %H:%M:%S"
        time_str = local_dt.strftime(local_format)
        return time_str
    
    # india_time_str = '2022-01-26 00:00:00+08:00'
    # time_str = india_to_local(india_time_str)
    # print(time_str)
    
    # ////  构造数据  start ///////
    Columns=['open', 'close', 'low', 'high', 'eob']
    data = DataFrame(columns=Columns)
    # 27.2 27.22 26.92 27.31 2022-01-26 00:00:00+08:00
    # 27.1 26.90 26.89 27.16 2022-01-27 00:00:00+08:00
    # 27.0 26.26 26.23 27.04 2022-01-28 00:00:00+08:00
    data.loc[0] =  [27.2, 27.22, 26.92, 27.31, '2022-01-26 00:00:00+08:00']
    data.loc[1] =  [27.1, 26.90, 26.89, 27.16, '2022-01-27 00:00:00+08:00']
    data.loc[2] =  [27.0, 26.26, 26.23, 27.04, '2022-01-28 00:00:00+08:00']
    # print(data,end='\n\n')
    # ////  构造数据  end ///////
    # ////  转换数据  start ///////
    # 修改格式
    data['eob'] = data['eob'].map(lambda x: india_to_local(x))
    # 修改列名
    data.rename(columns={"eob":"datatime"},inplace=True)
    # print(data,end='\n\n')
    
    Columns1 = ['datatime','open','close','low','high']
    
    # # 方法一:拼接到另一个表
    # finalData = DataFrame(columns=Columns1)
    # finalData = concat([finalData, data],
    #                 sort=False, join_axes=[finalData.columns])
    # print(finalData)
    
    # # 方法二:交换列名顺序
    finalData = data[Columns1]
    
    # 设置数据类型为字符串
    finalData = finalData.astype(str)
    print(finalData)
    finalData.to_excel('C:/Users/Lenovo/Desktop/1.xlsx', index=False)
    

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月6日
  • 已采纳回答 1月29日
  • 修改了问题 1月29日
  • 修改了问题 1月29日
  • 展开全部

悬赏问题

  • ¥20 Yolov5训练报错
  • ¥15 Unity发布gzip压缩的webgl之后让浏览器可以正常显示画面
  • ¥15 有没有人知道这种提示怎么关?现在不做ts项目了不知道咋关了,求解,现在我以前的js项目都是这种提示了
  • ¥15 为什么mysql做了碎片化处理data_free还是很高
  • ¥15 single positional indexer is out-of-bounds
  • ¥15 LSTM 模型数据量需要多少?
  • ¥15 mysql数据抓包开发报表
  • ¥15 linux系统下安装office打不开
  • ¥20 rsync脚本分发错误,文件不齐全
  • ¥15 labview顺序结构与时间延时