如何在Pandas中用前一行非NaN值填充列内后续NaN值直至下一个有效数据?
解决NaN值向前填充的问题
这需求太常见了!用Python的pandas库可以一步搞定你要的“用前一行有效数据填充后续NaN,直到遇到下一个非NaN值”的效果,也就是向前填充(Forward Fill)。
具体实现步骤
- 先构造你的目标数据集(模拟你给出的列数据):
import pandas as pd import numpy as np # 对应你提供的列数据 df = pd.DataFrame({ 'target_col': ['XXXXXXXX', np.nan, np.nan, np.nan, 'YYYYYYYY', np.nan, np.nan, np.nan] })
- 调用pandas的
ffill()方法(或者等价的fillna(method='ffill'))完成填充:
# 执行向前填充 df['target_col'] = df['target_col'].ffill()
最终结果
执行后你的数据列就会变成你期望的样子:
target_col 0 XXXXXXXX 1 XXXXXXXX 2 XXXXXXXX 3 XXXXXXXX 4 YYYYYYYY 5 YYYYYYYY 6 YYYYYYYY 7 YYYYYYYY
补充说明
- 如果你的数据是单独的
Series对象,同样可以直接调用series.ffill(),效果完全一致。 - 如果你的数据开头就存在NaN值,
ffill()会保留这些NaN(因为没有前序有效数据可以填充),要是需要处理这种情况,可以配合bfill()反向填充,但你的场景里开头是有效数据,所以不用额外处理。
内容的提问来源于stack exchange,提问作者alcheringa
相关产品推荐
相关产品推荐

