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

如何将Python DataFrame中最右列含NaN的行元素向右平移一列

解决方法

核心思路

不需要遍历整个DataFrame,直接用pandas内置的筛选和位移方法即可实现需求,逻辑如下:

  1. 筛选出最后一列值为NaN的行
  2. 对符合条件的行执行按行右移1位操作,移动后左侧空缺位置自动填充NaN
  3. 将处理后的行替换回原DataFrame即可

完整可运行代码

import pandas as pd
import numpy as np

# 构造示例数据,和你给出的结构一致
df = pd.DataFrame({
    'one': [1.0, 2.0, 3.0, 4.0],
    'two': [1.0, 2.0, 3.0, 4.0],
    # 中间如果有其他列直接补充即可,最后一列ten的规则和你给出的一致
    'ten': [1.0, np.nan, np.nan, 4.0]
}, index=['a', 'b', 'c', 'd'])

# 核心处理逻辑,仅1行代码即可完成
df[df.iloc[:, -1].isna()] = df[df.iloc[:, -1].isna()].shift(axis=1, fill_value=np.nan)

# 输出结果验证
print(df)

代码说明

  • df.iloc[:, -1]:表示取DataFrame的最后一列,不管总共有多少列都通用
  • df.iloc[:, -1].isna():返回布尔序列,标记最后一列值为NaN的行
  • shift(axis=1):指定按行方向移动数据,默认向右移动,fill_value=np.nan表示移动后左侧空缺的位置填充NaN

运行输出结果

one  two  ten
a  1.0  1.0  1.0
b  NaN  2.0  2.0
c  NaN  3.0  3.0
d  4.0  4.0  4.0

和你期望的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:06:06