打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用pandas将股票/期货中的日K线合成周K线,

使用pandas将股票/期货中的日K线合成周K线,如果周五遇上国家节假日变成非交易日,如何将日期正确展示?

世上无难事

115

发布于 2019-09-09

问题描述:

有某个股票的多个日K线数据,数据格式为dataframe,通过groupby进行合成周K线,且以周五作为开始展示点.

假设今天的日期是2019-09-17,在下方代码print(_df.tail())输出的的2019-09-13,请问需要如何做才能生成2019-09-12?

模拟数据:

import pandas as pd

import numpy as np

# A股交易日数组

dates = [

    '2019-08-23', '2019-08-26', '2019-08-27', '2019-08-28', '2019-08-29', '2019-08-30',

    '2019-09-02', '2019-09-03', '2019-09-04', '2019-09-05', '2019-09-06', '2019-09-09',

    '2019-09-10', '2019-09-11', '2019-09-12', '2019-09-16', '2019-09-17'

]

data = np.random.randint(low=1, high=5, size=[len(dates), 4]).tolist()

df = pd.DataFrame(data, pd.to_datetime(dates), ['open', 'high', 'low', 'close'])

# 合成K线

_df = df.groupby(pd.Grouper(freq='W-FRI')).agg(dict(open='first', high='max', low='min', close='last'))

print(_df.tail())

期待结果:

2019-08-23     2     2    4      1

2019-08-30     4     4    1      1

2019-09-06     4     3    2      4

2019-09-12     2     4    1      1

2019-09-17     4     4    2      2

实际输出:

2019-08-23     2     2    4      1

2019-08-30     4     4    1      1

2019-09-06     4     3    2      4

2019-09-13     2     4    1      1

2019-09-20     4     4    2      2



*********************

自己想到了一种方法,感觉应该可以解决这个问题.

import pandas as pd

import numpy as np

dates = [

    '2019-08-23', '2019-08-26', '2019-08-27', '2019-08-28', '2019-08-29','2019-08-30',

    '2019-09-02', '2019-09-03', '2019-09-04', '2019-09-05', '2019-09-06', '2019-09-09',

    '2019-09-10', '2019-09-11', '2019-09-12', '2019-09-16', '2019-09-17'

]

data = np.random.randint(low=1, high=5, size=[len(dates), 4]).tolist()

df = pd.DataFrame(data, pd.to_datetime(dates), ['open', 'high', 'low', 'close'])

df['date'] = dates

print(df.tail(10))

# 这里是合成代码

_df = df.groupby(pd.Grouper(freq='W-FRI')).agg(dict(open='first', high='max', low='min', close='last', date='last'))

_df.set_index('date', inplace=True)

print(_df.tail())

实际输出:

2019-08-23     2     1    4      4

2019-08-30     3     4    1      4

2019-09-06     3     4    1      3

2019-09-12     2     4    1      4

2019-09-17     3     4    1      1


*****************

pandas有个calender模块,可以自定义节假日,只要从上交所之类的网站或者wind把交易日日历爬出来就可以了。
参考
https://pandas.pydata.org/pan...


获取每个数据是星期几, 然后星期一到星期五的数据合并下。写个循环处理下不就可以了。

回复

世上无难事

目前是使用pandas做处理,用for循环不够优雅

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Pandas100秒处理一亿行数据
Pandas 中文API文档
python数据分析之pandas常用命令整理
教你如何用50道练习打通Pandas
Python学习笔记
[译]Pandas常用命令对照清单
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服