如何像Excel拖拽填充一样按规律填充pandas DataFrame空值
解决pandas实现Excel拖拽填充效果的方法
你可以针对不同字段的规律分类型处理,完全可以实现你要的拖拽填充效果:
- 对于连续递增的等差整数字段:直接用线性插值即可实现顺延
- 对于固定周期重复的数值字段:检测周期后按周期生成填充值
- 对于延续最后一个有效值的分类字段:直接用向前填充即可实现
可运行实现代码
import pandas as pd import numpy as np # 示例数据生成 d = { 'year': [2019,2020,2019,2020,np.nan,np.nan], 'cat1': [1,2,3,4,np.nan,np.nan], 'cat2': ['c1','c1','c1','c2',np.nan,np.nan]} df = pd.DataFrame(data=d) # 1. 处理cat1连续整数顺延 df['cat1'] = df['cat1'].interpolate(method='linear').astype(int) # 2. 处理year周期交替填充,示例中周期为2 non_null_year = df['year'].dropna().tolist() period = 2 df['year'] = [non_null_year[i%period] for i in range(len(df))] # 3. 处理cat2向前填充最后一个非空值 df['cat2'] = df['cat2'].ffill() print(df)
输出结果
year cat1 cat2 0 2019 1 c1 1 2020 2 c1 2 2019 3 c1 3 2020 4 c2 4 2019 5 c2 5 2020 6 c2
补充说明
你之前使用的krogh插值仅对线性/多项式规律的数值序列有效,对周期类数值、字符串类字段无法识别规律,因此分字段按业务规律处理是最稳定的方案。如果需要通用规律识别,可以额外增加周期检测、序列规律判断的逻辑适配不同场景。
内容的提问来源于stack exchange,提问作者vishvas chauhan
相关产品推荐
相关产品推荐

