我使用下面的代码来填充pandas中的NaN值。该df具有不同的气候变量(温度、湿度、降雨量、植被……)
df1[var_list]= df1[var_list].fillna(df1[var_list].rolling(3, min_periods=1).mean())
我想用该列中前2个值的平均值填充NaN。在df的某些部分,我有连续的8个NaN,所以上面的代码只填充前2个NaN。这是上述代码的正确输出
但我想填写所有NaN(可能是计算NaN值的平均值?-但我不知道如何做到这一点,因为我是新的python)。有没有更好的办法。我将使用时间滞后的输入到我的ML模型,这样我就不能放弃任何观察
变量列表==>;包含具有NAN的变量列表
这并不完美,但你可以通过两个步骤来实现这一点:
.ffill()
)虽然第一步将只填充直接出现在值之后的NAs,但第二步将从此处填充
但是我不确定这将如何处理NAs在单个值之后出现的情况,例如
听起来您希望将最后两个nan设置为2.5,但是这个方法可能会将它们设置为3(因为滚动平均值没有足够的前两个元素来填充它们)。所以最终这取决于你是否愿意改变你的方法
我想一个简单的方法就是一遍又一遍地做,直到通过做一次检查没有多余的n
相关问题 更多 >
编程相关推荐