![](/img/trans.png)
[英]Python/Pandas Calculate the mean time (hour) of a Datetime column
[英]Calculate the mean of column A based on a 2 minute time window in Datetime Column
我想根据设置为索引的时间列 t 计算 2 分钟窗口的平均功率。
power cadence
t
00:00:00 171.0 74.0
00:00:01 229.0 71.0
00:00:02 229.0 71.0
00:00:03 229.0 71.0
00:00:04 328.0 70.0
... ... ...
01:06:40 0.0 0.0
01:06:41 0.0 0.0
01:06:42 0.0 0.0
01:06:43 0.0 0.0
01:06:44 0.0 0.0
到目前为止我试过这个: pwr["average"] = pwr["power"].rolling(120).mean()
它计算 2 分钟窗口内的滚动平均值。
关于如何获得平均功率而不是给定时间窗口的滚动平均值的任何建议? 这将减少我想要的输出中的数据点。
当您将数据减少到 2 分钟窗口时,平均数据的频率将切换到 2 分钟而不是 1 秒。
您可以使用 resample 来获取平均值。
这是一个小例子
power = np.random.rand(600)
cadence = np.random.rand(600)
t = np.arange(600)
timestamps = [datetime.timedelta(seconds=int(x)) for x in t]
pwr = pd.DataFrame(zip(power, cadence), index=timeseries, columns={'power', 'cadence'})
pwr.resample('2min').mean()
从原始数据框
power cadence
0 days 00:00:00 0.830027 0.184573
0 days 00:00:01 0.915376 0.837455
0 days 00:00:02 0.699225 0.136516
0 days 00:00:03 0.692789 0.301164
0 days 00:00:04 0.890294 0.954707
... ... ...
0 days 00:09:55 0.419489 0.689846
0 days 00:09:56 0.553243 0.515789
0 days 00:09:57 0.361660 0.643095
0 days 00:09:58 0.940207 0.838618
0 days 00:09:59 0.594426 0.108080
[600 rows x 2 columns]
这将产生以下 2 分钟的数据:
power cadence
0 days 00:00:00 0.530908 0.514137
0 days 00:02:00 0.502127 0.539745
0 days 00:04:00 0.488102 0.499505
0 days 00:06:00 0.508043 0.509993
0 days 00:08:00 0.528632 0.478071
如果您希望将time
作为索引而不是 TimeDeltaIndex,您可以从索引中生成时间对象列表
pwr2min = pwr.resample('2min').mean()
pwr2min['t'] = pwr2min.index.components.apply(lambda x: datetime.time(hour=x['hours'], minute=x['minutes'], second=x['seconds']), axis=1).values
pwr2min.set_index('t', inplace=True)
这将使pwr2min
看起来像这样:
power cadence
t
00:00:00 0.530908 0.514137
00:02:00 0.502127 0.539745
00:04:00 0.488102 0.499505
00:06:00 0.508043 0.509993
00:08:00 0.528632 0.478071
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.