首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python区间训练分析,基于心率和功率的行计数

python区间训练分析,基于心率和功率的行计数
EN

Stack Overflow用户
提问于 2022-08-09 10:42:30
回答 1查看 47关注 0票数 0

目前,我正在研究一个运动员间歇训练的数据集。根据功率值,我希望自动计算训练中的间隔会话数。所以,如果功率超过200瓦,我想数一数高强度周期的秒数。

下面的代码显示了一个示例,数字是不现实的。

代码语言:javascript
复制
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瓦以上的高功率区有多少秒。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-09 10:46:24

,您可以计算连续时间戳之间的diff,然后使用布尔索引和sum进行筛选。

代码语言:javascript
复制
(-df['timestamp'].diff(-1))[df['power'].gt(200)].sum()

产出:

代码语言:javascript
复制
Timedelta('0 days 00:00:03')

注意:这是忽略最后一行,因为我们不知道最后的间隔持续多长时间。如果要考虑与前一个间隔相同的间隔:

代码语言:javascript
复制
(-df['timestamp'].diff(-1).ffill())[df['power'].gt(200)].sum()

产出:

代码语言:javascript
复制
Timedelta('0 days 00:00:04')

每一段连续值超过200:

代码语言:javascript
复制
m = df['power'].gt(200)

(-df['timestamp'].diff(-1))[m].groupby((~m).cumsum()).sum()

产出:

代码语言:javascript
复制
power
2   0 days 00:00:03
4   0 days 00:00:00
Name: timestamp, dtype: timedelta64[ns]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73290471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档