Pandas DataFrame列填充前序非空值后续空值的实现方法
解决方案
你要的这种「前序非空值填充后续空值」的需求,Pandas已经提供了原生矢量化实现,完全不需要写循环,直接用ffill()(向前填充)方法即可,性能远高于iterrows()/itertuples()循环方案。
实现步骤
- 第一步:先把
dept列里的空字符串替换为空值(ffill默认自动跳过空值向后填充) - 第二步:调用
ffill()方法完成填充
完整代码
import pandas as pd import numpy as np # 示例数据 data = {"dept": ["Emergency Medicine", "", "", "", "Family Practice", "", ""], "pi": [np.NaN, "Tiger Woods", "Michael Jordan", "Roger Federer", np.NaN, "Serena Williams", "Alex Morgan"] } df = pd.DataFrame(data=data) # 核心处理逻辑 df['dept'] = df['dept'].replace('', pd.NA).ffill() # 输出结果与期望完全一致 print(df)
说明
ffill()是Pandas内置的向量化方法,底层由C实现,百万行级数据处理仅需毫秒,完全不需要自己写循环遍历。如果你的dept列空值本身就是NaN而非空字符串,直接省略replace步骤,仅写df['dept'] = df['dept'].ffill()即可。
内容的提问来源于stack exchange,提问作者Eoin Vaughan
相关产品推荐
相关产品推荐

