使用pandas从指定行索引开始将单列向下偏移1位的实现方法
正确实现方式
你只需要筛选出需要偏移的行范围单独操作即可,不要对整列做shift:
# 仅针对索引≥2的Column1列做向下偏移1步 df.loc[2:, 'Column1'] = df.loc[2:, 'Column1'].shift(1)
原理解释
你之前的写法是对整列Column1做偏移,所以首行也会出现空值。上述写法通过loc筛选出从索引2到末尾的目标列片段,只对这部分数据执行偏移操作,索引0、1行的Column1数据会保持原样,最终得到你需要的结果。
如果你的表格索引不是默认的连续整数,需要按行位置而非索引标签选择范围,可以用iloc实现:
col_idx = df.columns.get_loc('Column1') df.iloc[2:, col_idx] = df.iloc[2:, col_idx].shift(1)
内容的提问来源于stack exchange,提问作者Johan Jomy
相关产品推荐
相关产品推荐

