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

如何用Pandas将选中单元格填充为列中前一个非NaN值

使用Pandas实现指定行替换为前序非NaN值

解决方案1:简洁批量替换

通过前向填充+取值替换的方式快速完成需求:

import pandas as pd
import numpy as np

# 初始化数据集
df = pd.DataFrame({
    'A': ['x', 'x', 'y', 'z'],
    'B': ['a', np.nan, 'c', 'd']
})

# 获取最后两行之前的所有行中,各列的最终非NaN有效值
fill_values = df.iloc[:-2].ffill().iloc[-1]

# 替换最后两行
df.iloc[-2:] = fill_values

解决方案2:逐列精准处理

如果需要更明确地控制每一列的取值逻辑,可以逐列定位最后一个有效索引后替换:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': ['x', 'x', 'y', 'z'],
    'B': ['a', np.nan, 'c', 'd']
})

# 处理A列:找到前两行中最后一个非NaN值的索引,替换最后两行
last_valid_A_idx = df['A'].iloc[:-2].last_valid_index()
df.loc[df.index[-2:], 'A'] = df['A'].loc[last_valid_A_idx]

# 处理B列:找到前两行中最后一个非NaN值的索引,替换最后两行
last_valid_B_idx = df['B'].iloc[:-2].last_valid_index()
df.loc[df.index[-2:], 'B'] = df['B'].loc[last_valid_B_idx]

结果验证

执行上述代码后,数据集会变为目标样式:

AB
xa
xnan
xa
xa

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:32:16