python - 特定时间间隔内时间索引的平均 pandas 数据帧

标签 python pandas dataframe

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

>> 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

需要你的帮助。谢谢

最佳答案

通过date_range创建DatetimeIndex并通过 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']

同时将原始索引转换为groupby聚合平均值,最后 reindex范围:

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

关于python - 特定时间间隔内时间索引的平均 pandas 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48463174/

相关文章:

python - 如何在 python 的碎片中编码字符?

python - 沿给定轴的 numpy kron

python - 将多个 div 类中的数据抓取到 pandas 数据框中

python - 在 Python 中格式化聚合数据帧的 header

python - 从使用 apply() 方法的数据框中,如何返回包含数据框中元素列表的新列?

python - Pandas :删除另一个系列时间索引的时间间隔内的所有行(即时间范围排除)

python - PyGTK:制作一个行为类似于 OpenOffice 的 TextView

python - 在 python 中使用名称列表打开多个文件

python - 修改 Pandas 数据框中的许多列

python - Pandas :根据另一个数据框的列选择数据框列