如何在pandas中用上一行的值填充缺失的列数据
解决方法
直接使用pandas自带的向前填充方法ffill()即可实现用上一行值补全缺失值的需求,完整可运行代码如下:
import pandas as pd # 读取原始CSV文件,空值会默认解析为NaN格式 df = pd.read_csv("pivot-products.csv") # 对product_id列做向前填充,用上一行的有效值补全空缺 # 如果需要同时填充name列,可将代码改为 df[['product_id','name']] = df[['product_id','name']].ffill() df['product_id'] = df['product_id'].ffill().astype(int) # 此时pivot方法可正常运行 df.pivot(index='product_id',columns='modifier')
补充说明
ffill()是fillna(method='ffill')的简写,两种写法效果完全一致,作用就是沿着行方向自动将缺失值替换为上一行的非缺失值,完全匹配需求- 代码中追加的
astype(int)是为了将product_id的格式转回整数,避免因填充前的空值导致列格式变为浮点型,和手动填充后的数据集格式完全一致
内容的提问来源于stack exchange,提问作者ajayramesh
相关产品推荐
相关产品推荐

