繁体   English   中英

根据日期时间列中的 2 分钟时间窗口计算 A 列的平均值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM