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

如何仅用下一行值填充DataFrame指定列的首个前置NaN?

解决方案

明确需求:仅对列索引为2的列做处理,保留第0行的NaN,将该列中第1行的NaN用下一行(第2行)的值填充,其他位置保持不变。

实现代码

import pandas as pd
df = pd.DataFrame([[1, 2, None], [4, None, None], [None, 1, 9]])

# 指定目标列
target_col = 2
# 找到目标列第一个非缺失值的行索引
first_valid_idx = df[target_col].first_valid_index()

# 检查目标位置是否为NaN,满足条件则填充
if first_valid_idx > 0 and pd.isna(df.loc[first_valid_idx - 1, target_col]):
    df.loc[first_valid_idx - 1, target_col] = df.loc[first_valid_idx, target_col]

print(df)

输出结果

0    1    2
0  1.0  2.0  NaN
1  4.0  NaN  9.0
2  NaN  1.0  9.0

代码说明

  • df[target_col].first_valid_index():精准定位目标列中第一个非NaN值的行位置,此处返回索引2
  • 通过条件判断确保存在可填充的前置NaN,仅将第一个有效值的上一行NaN替换为该有效值,完全匹配需求,不会误修改其他位置的NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:57:10