使用Pandas循环替换每行每列的NaN值为前序非空值
解决方案
直接使用Pandas内置的**前向填充(forward fill)**方法就能高效解决这个问题,完全适配大规模数据集:
步骤代码
import pandas as pd # 读取CSV文件,确保将字符串"NaN"识别为缺失值 df = pd.read_csv("your_dataset.csv", na_values="NaN") # 执行前向填充:将每列的NaN替换为最近的前一个非NaN值 df_filled = df.ffill() # 保存处理后的数据集(index=False避免额外保存索引列) df_filled.to_csv("filled_dataset.csv", index=False)
关键说明
ffill()是Pandas优化后的矢量化操作,处理百万级数据也不会有性能问题,比嵌套循环/自定义查询效率高几个数量级- 完全匹配你的规则:
- 非NaN单元格保持不变
- NaN单元格会被替换为同一列中最近的前一个非NaN值
- 连续多个NaN会自动沿用首个非NaN值,直到新的非NaN值出现
- 如果数据集第一行就是NaN,
ffill()会保留该NaN(因为前面没有可填充的值),符合逻辑
内容的提问来源于stack exchange,提问作者Eduards L
相关产品推荐
相关产品推荐

