You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于标记索引为DataFrame批量生成坡度列的技术需求

实现DataFrame中按Lap区间循环赋值incline列

背景与现有代码

现有DataFrame test_data 包含Marker列,已通过以下代码完成Lap列的赋值:

marker = "*" 
marker_indexes = test_data.index[test_data['Marker'] == marker].tolist()

lap_count = 1  # Initialize the 'Lap' count
for i in range(0, len(marker_indexes), 5):
    start_index = marker_indexes[i]
    end_index = min(marker_indexes[i + 4], len(resampled) - 1)
    test_data.loc[start_index:end_index, 'Lap'] = lap_count
    lap_count += 1

给定的marker_indexes列表如下:

marker_indexes = [
    36, 118, 240, 317, 348,
    370, 488, 609, 694, 725,
    746, 880, 1003, 1097, 1131,
    1160, 1281, 1404, 1500, 1536,
    1561, 1694, 1819, 1920, 1951
]

需求说明

需要新增incline列,每个Lap对应的标记区间需依次循环赋值[1.1, 3, 7, 1.2, 0],填充规则示例如下:

marker_indexLapincline
3611.1
…11.1
11811.1
11913
…13
24013
24117
…17
31717
31811.2
…11.2
34811.2
34910
…10
37010

后续Lap需重复上述赋值逻辑。

实现方案

通过遍历每个Lap对应的5个标记点,分割出子区间并依次赋值对应的incline值,代码如下:

# 定义incline的循环赋值模板
incline_values = [1.1, 3, 7, 1.2, 0]

# 按每5个marker索引为一组(对应一个Lap)遍历
for lap_start_idx in range(0, len(marker_indexes), 5):
    # 获取当前Lap对应的5个marker索引
    lap_markers = marker_indexes[lap_start_idx:lap_start_idx+5]
    # 遍历每个子区间,匹配对应的incline值
    for i in range(len(lap_markers)):
        if i == 0:
            # 第一个区间:从第1个marker到第2个marker(包含两端)
            start = lap_markers[i]
            end = lap_markers[i+1]
        else:
            # 后续区间:从上一个marker的下一个索引到当前marker(包含两端)
            start = lap_markers[i-1] + 1
            end = lap_markers[i]
        # 为区间赋值对应的incline值
        test_data.loc[start:end, 'incline'] = incline_values[i]

代码说明

  1. 固定incline_values作为每个Lap内5个区间的赋值模板;
  2. 按每5个marker索引为一组划分Lap,遍历所有组;
  3. 对每组内的marker索引分割区间:
    • 第一个区间覆盖第1个到第2个marker的所有行;
    • 后续每个区间覆盖上一个marker的下一行到当前marker的所有行;
  4. 每个区间对应赋值incline_values中的元素,实现跨Lap的循环复用逻辑。

内容的提问来源于stack exchange,提问作者Hansson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 21:50:30