我已经尝试了几个小时这个问题并且没有解决方案..
下面是盘中5分钟外汇数据 - df。它每天每5分钟记录一次。 我已经排除了周末数据,因为市场在周末关闭。这个周末定义为周五下午5:00 - 周日下午5:00。
Time OPEN CLOSE
216 2014-01-01 18:05:00 0.891975 0.892185
217 2014-01-01 18:10:00 0.892075 0.892090
...
210238 2015-12-31 23:55:00 1.000390 1.000390
210239 2016-01-01 00:00:00 1.000390 1.000390
一天的定义是从上午11:00到上午11:00。所以当我说2014-01-02时,我正在汇总2014-01-01上午11:00到2014-01-02 11:00 am的数据。 2014-01-06(星期一)将包括两个区间的数据: 1. 2014-01-03(周五)11:00 - 17:00 2. 2014-01-05(周日)17:00 - 2014-01-06 11:00
我想创建一个新列'Date'来定义新的“day” 所以通过读取df.Time,该列将记录它属于哪一天。
你会怎么做?
Time OPEN CLOSE Date
2014-01-03 14:05:00 0.891975 0.892185 2014-01-06
2014-01-05 17:00:00 0.892075 0.892090 2014-01-06
2014-01-06 11:00:00 0.892075 0.892090 2014-01-06
...
2015-12-31 23:55:00 1.000390 1.000390 2016-01-01
2016-01-01 00:00:00 1.000390 1.000390 2016-01-01
答案 0 :(得分:1)
我使用熊猫补偿。
import pandas as pd
times = pd.date_range('2016-01-01 11:00:00', '2016-01-15 11:00:00', freq='H')
pd.to_datetime((times - pd.offsets.Hour(11) + pd.offsets.BDay()).date)
times
在'2016-01-01 11:00:00'
和'2016-01-15 11:00:00'
根据您的描述,如果我减去11个小时并添加一个工作日,我应该在您要找的那一天。然后我转换到没有时间组件的那一天。