Pandas如何复制行值填充至另一列上3行、下5行区域
Pandas指定区间填充列实现方案
核心逻辑:定位event列所有非空有效值的行位置,对每个有效值,将其填充到对应行上方3行、下方5行范围内的epoch列,自动做边界裁剪避免索引越界。
实现代码
import pandas as pd import numpy as np # 初始化epoch列,默认值为NaN df["epoch"] = np.nan # 遍历event列所有非空值的行索引和对应取值 for row_idx, event_val in df[df["event"].notna()]["event"].items(): # 计算填充范围的起止行,防止索引小于0或超出表格最大行号 fill_start = max(0, row_idx - 3) fill_end = min(len(df) - 1, row_idx + 5) # 给指定区间赋值 df.loc[fill_start:fill_end, "epoch"] = event_val
效果说明
运行上述代码后得到的结果和给出的示例完全匹配:
- 若
event列的2_1位于索引6的位置,填充范围为3~11行,和示例中2_1的填充区间一致 - 若
event列的3_1位于索引20的位置,填充范围为17~25行,和示例中3_1的填充区间一致 - 区间外的行
epoch列保持为NaN
可调说明
- 如果需要修改上下填充的行数,直接调整
row_idx - 3、row_idx + 5两个位置的数值即可 - 如果存在多个有效值的填充区间重叠,代码默认会用后遍历到的event值覆盖重叠区域的原有值,有特殊规则可以在赋值前加判断逻辑自定义。
内容的提问来源于stack exchange,提问作者Olivia
相关产品推荐
相关产品推荐

