问题描述:
有某个股票的多个日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
实际输出: