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

如何在Pandas中根据Signal列触发值生成对应新列?

实现Signal触发的多列值填充需求

针对需求——每当Signal列出现1时创建新列,将对应行Value的值填入,后续行保持该值、初始值为0,这里提供基于Python Pandas的实现方案:

步骤说明

  1. 定位所有Signal为1的行,记录这些行的索引和对应的Value值
  2. 为每个信号依次创建新列,初始值全设为0
  3. 在信号触发的行位置填入对应Value,再通过向前填充(ffill)让后续行保持该值,前面的行维持0

代码实现

import pandas as pd

# 构建初始数据
data = {
    'Index': range(12),
    'Value': [3, 8, 8, 7, 9, 10, 14, 10, 10, 4, 10, 10],
    'Signal': [0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0]
}
df = pd.DataFrame(data)

# 提取所有Signal为1的行的索引和对应Value
signal_records = df[df['Signal'] == 1][['Value']].reset_index()

# 循环创建并填充新列
for seq, row in signal_records.iterrows():
    col_name = f'New_Col_{seq + 1}'
    # 初始化新列为0
    df[col_name] = 0
    # 在信号触发行填入对应Value
    df.loc[row['index'], col_name] = row['Value']
    # 向前填充,让后续行保持该值
    df[col_name] = df[col_name].ffill()

# 查看结果
print(df)

结果验证

运行代码后得到的DataFrame与预期输出完全一致:

IndexValueSignalNew_Col_1New_Col_2New_Col_3
030000
180000
280000
371700
490700
5100700
61417140
71007140
81007140
9417144
101007144
111007144

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:31:20