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

如何在Python的Pandas中向下复制列非空值填充缺失项

解决Pandas DataFrame列非空值向下填充问题

你要实现的是把col1列的非空值向下复制,覆盖后续缺失项直到遇到下一个非空值,不用手动遍历行,Pandas有内置的高效方法可以直接搞定:

步骤1:构造示例数据(模拟你的原始DataFrame)

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'col1': ['a', np.nan, 'b', np.nan, np.nan, 'c', np.nan],
    'col2': [np.nan, 'x1', np.nan, 'y1', 'p1', np.nan, 'q1'],
    'col3': [np.nan, 'x2', np.nan, 'y2', 'p2', np.nan, 'q2']
})

步骤2:执行向下填充

直接使用ffill()方法(forward fill的缩写,即向前填充),它会自动把最近的非空值向下填充到所有后续缺失项,直到遇到下一个非空值:

df['col1'] = df['col1'].ffill()

最终结果

处理后的DataFrame就是你要的目标格式:

col1col2col3
0aNaNNaN
1ax1x2
2bNaNNaN
3by1y2
4bp1p2
5cNaNNaN
6cq1q2

为什么手动遍历容易失败?

手动遍历行的时候,需要额外维护当前要填充的非空值状态,还要处理索引、空值判断等细节,很容易因为逻辑疏漏(比如没及时更新当前值、空值判断错误)导致结果不符合预期。而ffill()是Pandas专门为这类场景优化的函数,不仅代码简洁,处理大数据集的效率也远高于手动遍历。

注:如果使用的是旧版本Pandas,也可以用df['col1'].fillna(method='ffill'),效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:25:42