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

Pandas如何仅对DataFrame中选中的指定行沿列轴偏移1个周期

Pandas特定行沿列偏移实现方案

你原有代码的问题是仅修改了单个列,且shift()默认沿行轴(垂直方向)偏移,和你要的列轴(水平方向)偏移需求不符,正确实现如下:

# 定位需要偏移的行:Year_2005不为空的行索引
rows_to_shift = Df[Df['Year_2005'].notnull()].index
# 对指定行的所有年份列(排除Month列)沿列轴向右偏移1位
Df.loc[rows_to_shift, Df.columns[1:]] = Df.loc[rows_to_shift, Df.columns[1:]].shift(periods=1, axis=1)

代码说明

  • periods=1 指定偏移1个周期
  • axis=1 明确指定沿列轴(水平方向)偏移,而非默认的行轴垂直偏移
  • 直接操作所有年份列(Df.columns[1:]表示从第2列开始的所有列),保证多列同步偏移,不需要单独修改每一列,也适配列数更多的场景

运行上述代码后,原行索引5、6的三个年份列值[31,21,NaN]、[29,27,NaN]沿列右移1位后,会变成[NaN,31,21]、[NaN,29,27],和你期望的输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:39:02