如何基于上一行的值替换DataFrame指定行的con、num、stim列数值
实现方案(Python Pandas环境)
直接用Pandas的位移和填充功能即可快速实现,代码逻辑如下:
- 第一步:生成标记掩码,定位所有
num==3的行及后续2行 - 第二步:对标记范围内的行向下填充
con和num字段 - 第三步:统一设置标记范围内的
stim值为1
示例代码:
import pandas as pd import numpy as np # 假设你的原始数据读入后存为df变量 # 1. 生成掩码:标记num=3的行 + 后续2行 mask = df['num'] == 3 mask = mask | mask.shift(1, fill_value=False) | mask.shift(2, fill_value=False) # 2. 填充con和num列:仅在掩码范围内向前填充对应值 df.loc[mask, ['con', 'num']] = df.loc[mask, ['con', 'num']].where(df['num'] == 3, np.nan) df[['con', 'num']] = df[['con', 'num']].ffill() # 3. 更新stim列 df['stim'] = mask.astype(int)
注意:如果你的DataFrame索引不是从0开始的连续整数,可以先执行
df = df.reset_index(drop=True)再运行上述代码,操作完成后按需恢复索引即可。该逻辑兼容存在多个间隔的num==3行的场景,也自动处理最后几行不足2行的边界情况。
内容的提问来源于stack exchange,提问作者kas0013
相关产品推荐
相关产品推荐

