如何将DataFrame的Per_Extract列有效值填充至所有NaN行?
解决DataFrame中用唯一有效值填充NaN的问题
问题场景
你有如下DataFrame,希望将Per_Extract列中唯一的有效值填充到该列所有NaN位置:
原始DataFrame:
IN Per_Extract 0 IN7395593 NaN 1 IN7444113 FROM : 2022-08-01 TO : 2022-10-20 2 IN7444613 FROM : 2022-08-01 TO : 2022-10-20 3 IN7444116 FROM : 2022-08-01 TO : 2022-10-20 4 IN7334213 NaN
期望输出:
IN Per_Extract 0 IN7395593 FROM : 2022-08-01 TO : 2022-10-20 1 IN7444113 FROM : 2022-08-01 TO : 2022-10-20 2 IN7444613 FROM : 2022-08-01 TO : 2022-10-20 3 IN7444116 FROM : 2022-08-01 TO : 2022-10-20 4 IN7334213 FROM : 2022-08-01 TO : 2022-10-20
你尝试使用ffill()方法但未生效:
df['Per_Extract'] = df['Per_Extract'].ffill()
解决方案
ffill()失效的原因是它仅会用当前行之前的有效值填充后续的NaN,但第一行的NaN没有前置有效值,无法被填充;同时它也不会用后续的有效值反向填充前面的NaN。
要实现用列中唯一有效值填充所有NaN,可按以下步骤操作:
- 提取
Per_Extract列的非空唯一有效值 - 使用该值填充列内所有NaN
示例代码:
# 获取唯一的非空有效值 valid_value = df['Per_Extract'].dropna().unique()[0] # 填充所有NaN df['Per_Extract'] = df['Per_Extract'].fillna(valid_value)
运行后即可得到你期望的输出结果。
内容的提问来源于stack exchange,提问作者gfernandes
相关产品推荐
相关产品推荐

