如何聚合日内时间戳并在pandas dataframe Python中创建一个新列

时间:2016-06-16 23:09:00

标签: python pandas dataframe

我已经尝试了几个小时这个问题并且没有解决方案..

下面是盘中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

1 个答案:

答案 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个小时并添加一个工作日,我应该在您要找的那一天。然后我转换到没有时间组件的那一天。