代码之家  ›  专栏  ›  技术社区  ›  muazfaiz

特定时间间隔内熊猫数据帧时间索引的平均值

  •  2
  • muazfaiz  · 技术社区  · 7 年前

    我有一个数据框,其中每个时间戳都有一些由用户获得的分数。看起来如下所示,即数据是在几秒钟后收集的

    >> df.head()
                         points
    timestamp                                                    
    2017-05-29 17:40:45    5
    2017-05-29 17:41:53    7
    2017-05-29 17:42:34    3
    2017-05-29 17:42:36    8 
    2017-05-29 17:42:37    6
    

    然后我想每隔5分钟对它重新取样,所以我这样做了

    >> df.resample("5min").mean()
                    points
    timestamp   
    5/29/2017 17:40   8
    5/29/2017 17:45   1
    5/29/2017 17:50   4
    5/29/2017 17:55   3
    5/29/2017 18:00   8
    5/30/2017 17:30   3
    5/30/2017 17:35   3
    5/30/2017 17:40   7
    5/30/2017 17:45   8
    5/30/2017 17:50   5
    5/30/2017 17:55   7
    5/30/2017 18:00   1
    

    现在我想给出这样一个输入 input_time = "17:00-18:00" 我想把输入时间分成5分钟的间隔,例如。 [17:05, 17:10 ... 17:55, 18:00] . 之后,我想得到每个时间间隔的平均得分。结果如下所示

    interval points
    17:00     -
    17:05     -
    ….  
    17:30     3
    17:35     3
    17:40     7.5
    17:45     4.5
    17:50     4.5
    17:55     5
    18:00     4.5
    

    需要你的帮助。谢谢

    1 回复  |  直到 7 年前
        1
  •  2
  •   jezrael    7 年前

    创造 DatetimeIndex 通过 date_range 并更改格式 strftime :

    input_time = "17:00-18:00"
    s,e = input_time.split('-')
    r = pd.date_range(s, e, freq='5T').strftime('%H:%M')
    print (r)
    ['17:00' '17:05' '17:10' '17:15' '17:20' '17:25' '17:30' '17:35' '17:40'
     '17:45' '17:50' '17:55' '18:00']
    

    同时转换原始 index 对于 groupby 含骨料 mean 最后的 reindex 通过 range :

    df = df.groupby(df.index.strftime('%H:%M'))['points'].mean().reindex(r)
    print (df)
    17:00    NaN
    17:05    NaN
    17:10    NaN
    17:15    NaN
    17:20    NaN
    17:25    NaN
    17:30    3.0
    17:35    3.0
    17:40    7.5
    17:45    4.5
    17:50    4.5
    17:55    5.0
    18:00    4.5
    Name: points, dtype: float64