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

基于start、end双条件用指定步长序列填充pandas列的实现方案

实现代码

你可以通过分组累计计数的方式完成需求,性能远高于逐行apply的lambda实现,和你预期输出完全匹配:

import pandas as pd
import numpy as np

# 示例数据构造
df = pd.DataFrame({
    'start': [1,0,0,0,0,0,0,0,1,0],
    'end': [0,0,0,0,0,1,0,0,0,0]
})

# 核心逻辑
# 1. 给每个计数段分配唯一组ID
df['group_id'] = df['start'].cumsum()
# 2. 标记当前行是否在对应组的end行之后
df['after_end'] = df.groupby('group_id')['end'].cummax().shift(fill_value=0)
# 3. 计算time列值
df['time'] = np.where(
    df['after_end'].eq(0),
    -5000 + df.groupby('group_id').cumcount() * 4,
    np.nan
)

# 删除临时列得到最终结果
df = df.drop(columns=['group_id', 'after_end'])
print(df)

运行后输出和你提供的预期结果完全一致,同时支持多段start-end交替的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:15:07