gpt4 book ai didi

python - Pandas 中的自定义时间序列重采样

转载 作者:行者123 更新时间:2023-11-30 23:20:57 25 4
gpt4 key购买 nike

我有一个 1m 频率的带有 OHLC 数据的 df:

                        Open     High      Low    Close
DateTime
2005-09-06 18:00:00 1230.25 1231.50 1230.25 1230.25
2005-09-06 18:01:00 1230.50 1231.75 1229.25 1230.50
.
.
2005-09-07 15:59:00 1234.50 1235.50 1234.25 1234.50
2005-09-07 16:00:00 1234.25 1234.50 1234.25 1234.25

我需要进行适合 future 交易时间数据的“自定义”重新采样,其中:

  • 每天从前一天的 18:00:00 开始(周一从周日 18:00:00 开始)
  • 每天于当日 16:00:00 结束
  • 时间戳应为收盘时间,而不是开盘时间。

重新采样后,输出应为:

                        Open     High      Low    Close
DateTime
2005-09-07 16:00:00 1230.25 1235.50 1229.25 1234.25

地点:

  • 打开 = 第一个(打开栏)时间为 2005-09-06 18:00:00
  • 最高值 = 2005-09-06 18:00:00 到 2005-09-07 16:00:00 的最大值(列最高值)
  • 低 = 2005-09-06 18:00:00 至 2005-09-07 16:00:00 的最小值(低列)
  • 关闭 = 最后(列关闭)于 2005-09-07 16:00:00

我已经尝试过:

  • 更改了参数规则和基础,但没有成功。
  • 尝试重新索引但没有成功。

我使用了以下“如何”:

conversion = {'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'}

最佳答案

import pandas as pd
df = pd.read_table('data', sep='\s{2,}')
# Make sure the index is a DatetimeIndex
df.index = pd.DatetimeIndex(df.index)

# discard rows whose time falls between 16:00 and 18:00
df = df.between_time('18:00', '16:00', include_start=True, include_end=True)

proxy = df.index + pd.DateOffset(hours=6)
result = df.groupby(proxy.date).agg(
{'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last'})
result = result.reindex(columns=['Open','High','Low','Close'])
print(result)

产量

               Open    High      Low    Close
2005-09-07 1230.25 1235.5 1229.25 1234.25
<小时/>

上面的代码创建了一个代理日期,该日期是通过向索引中的每个日期时间添加 6 小时来计算的。然后,该代理日期将用作 groupby 值。

In [112]: proxy = pd.DatetimeIndex(df.index) + pd.DateOffset(hours=6)

查看代理值与索引的对应关系:

In [116]: pd.Series(proxy.date, index=df.index)
Out[116]:
DateTime
2005-09-06 18:00:00 2005-09-07
2005-09-06 18:01:00 2005-09-07
2005-09-07 15:59:00 2005-09-07
2005-09-07 16:00:00 2005-09-07
dtype: object

关于python - Pandas 中的自定义时间序列重采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25169851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com