我有一个非常大的数据框,我试图用非纳米值之前和之后的平均值来填充一些特定值的空白。事情是这样的:我有很多空格,所以我想仅对最多 24 个连续空格的行应用此规则。如果有> 24(也有很多)我想保持原样。
首先我尝试了这个:
df = df.interpolate(limit=24)
但它并没有按照我想要的方式工作。例如,如果我有 34 个 nan 连续值,则此代码将填充直到第 24 个元素,并保持其他 10 个元素不变。
另外,尝试:
df["speed"] = df["speed"].transform(lambda x: x.fillna((df["speed"].ffill()+df["speed"].bfill())/2, limit=24))
它也不起作用。甚至只有1或2个连续的NaN也没有被替换。非常感谢任何帮助!
最佳答案
让我们尝试一下:
s = df['speed']
s.interpolate()\
.mask((s.groupby(s.notna().cumsum()).transform('size') - 1).where(s.isna()) > 24)
关于python - 仅当有 24 个连续 NAN 或更多时才填充 NAN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58548387/