【发布时间】:2019-11-24 17:13:23
【问题描述】:
我的数据集df 看起来像这样。这是一个基于minute 的数据集。
time, Open, High
2017-01-01 00:00:00, 1.2432, 1.1234
2017-01-01 00:01:00, 1.2432, 1.1234
2017-01-01 00:02:00, 1.2332, 1.1234
2017-01-01 00:03:00, 1.2132, 1.1234
...., ...., ....
2017-12-31 23:59:00, 1.2132, 1.1234
我想为Open 列找到每小时一次的rolling mean,但它应该是灵活的,以便我也可以为其他列找到每小时一次的rolling mean。
我做了什么?
我可以找到daily rolling average,如下所示:
# Pandas code to find the rolling mean for a single day
df
.assign(1davg=df.rolling(window=1*24*60)['Open'].mean())
.groupby(df['time'].dt.date)
.last()
请注意,将这行代码(window=1*24*60 更改为 window=60)不起作用,因为我已经尝试过了。
新的output 应该如下所示:
time, Open, High, Open_hour_avg
2017-01-01 00:00:00, 1.2432, 1.1234, 1.2532
2017-01-01 01:00:00, 1.2432, 1.1234, 1.2632
2017-01-01 02:00:00, 1.2332, 1.1234, 1.2332
2017-01-01 03:00:00, 1.2132, 1.1234, 1.2432
...., ...., ...., ....
2017-12-31 23:00:00, 1.2132, 1.1234, 1.2232
这里,
2017-01-01 00:00:00, 1.2432, 1.1234, 1.2532 是 minute 的平均数据 midnight
而2017-01-01 01:00:00, 1.2432, 1.1234, 1.2632 是minute 的平均数据1 AM
【问题讨论】:
-
您是否尝试过每小时重新采样时间序列? pandas.pydata.org/pandas-docs/stable/reference/api/…
-
我试过了,但它给了
TypeError: Only valid with DatetimeIndex,但我的df已经在DatetimeIndex中了 -
尝试:df.index = pd.to_datetime(df.index) 然后尝试重新采样
标签: python-3.x pandas dataframe datetime python-datetime