【问题标题】:How to aggregate intraday time stamps and create a new column in pandas dataframe Python如何在 Pandas 数据框 Python 中聚合日内时间戳并创建新列
【发布时间】:2016-06-16 23:08:59
【问题描述】:

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

以下是盘中 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 am 到 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

我想创建一个新列“日期”来定义新的“日期” 所以通过读取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

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    我使用 pandas 偏移量。

    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 小时并添加一个工作日,我应该在您要查找的那一天。然后我转换为没有时间分量的日期。

    【讨论】:

      猜你喜欢
      • 2016-11-17
      • 1970-01-01
      • 2017-05-06
      • 2021-10-23
      • 2016-12-25
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多