目前,我正在研究一个运动员间歇训练的数据集。根据功率值,我希望自动计算训练中的间隔会话数。所以,如果功率超过200瓦,我想数一数高强度周期的秒数。
下面的代码显示了一个示例,数字是不现实的。
df = pd.DataFrame(
[[Timestamp('2022-08-05 10:11:04'), 140, 120],
[Timestamp('2022-08-05 10:11:05'), 160, 155],
[Timestamp('2022-08-05 10:11:06'), 230, 156],
[Timestamp('2022-08-05 10:11:07'), 230, 155],
[Timestamp('2022-08-05 10:11:08'), 230, 160],
[Timestamp('2022-08-05 10:11:09'), 140, 130],
[Timestamp('2022-08-05 10:11:10'), 140, 131],
[Timestamp('2022-08-05 10:11:11'), 230, 170]],
columns=['timestamp', 'power', 'heart rate'])最后,我想知道一个运动员在200瓦以上的高功率区有多少秒。
发布于 2022-08-09 10:46:24
,您可以计算连续时间戳之间的diff,然后使用布尔索引和sum进行筛选。
(-df['timestamp'].diff(-1))[df['power'].gt(200)].sum()产出:
Timedelta('0 days 00:00:03')注意:这是忽略最后一行,因为我们不知道最后的间隔持续多长时间。如果要考虑与前一个间隔相同的间隔:
(-df['timestamp'].diff(-1).ffill())[df['power'].gt(200)].sum()产出:
Timedelta('0 days 00:00:04')每一段连续值超过200:
m = df['power'].gt(200)
(-df['timestamp'].diff(-1))[m].groupby((~m).cumsum()).sum()产出:
power
2 0 days 00:00:03
4 0 days 00:00:00
Name: timestamp, dtype: timedelta64[ns]https://stackoverflow.com/questions/73290471
复制相似问题