You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataFrame中interpolate函数无法填充NaN值问题求助

ESG缺失数据填充问题的解决思路

核心问题排查

你的代码能运行但无法填充NaN,主要是两个关键问题:

  • 未执行插值函数:定义了interpolate_func但没有调用,填充逻辑根本没触发。
  • 插值逻辑存在优化点:默认线性插值基于位置,不匹配时间索引;循环中动态删列可能导致遍历异常。

具体修复方案

1. 补全函数调用

在代码末尾添加函数执行语句,让填充逻辑生效:

# 执行插值与列删除逻辑
try1 = interpolate_func(try1)
# 验证修复结果
print(try1.isnull().sum())

2. 优化插值函数实现

修改函数,使用时间驱动的插值方法,同时先收集待删除列再统一删除,避免遍历错误:

def interpolate_func(df):
    cols_to_drop = []
    for column in df.columns:
        missing_count = df[column].isna().sum()
        if 1 <= missing_count <= 6:
            # 针对时间索引使用time插值,更贴合年度数据的时序逻辑
            df[column] = df[column].interpolate(method='time')
        elif missing_count > 6:
            cols_to_drop.append(column)
    # 统一删除符合条件的列
    df = df.drop(cols_to_drop, axis=1)
    return df

3. 特殊场景处理(可选)

如果列的首尾存在连续NaN,默认interpolate不会填充,可添加参数强制填充(需结合业务场景判断合理性):

df[column] = df[column].interpolate(method='time', limit_direction='both')

内容的提问来源于stack exchange,提问作者lorenzo panetta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 13:07:40