python - 仅当有 24 个连续 NAN 或更多时才填充 NAN 值

标签 python pandas

我有一个非常大的数据框,我试图用非纳米值之前和之后的平均值来填充一些特定值的空白。事情是这样的:我有很多空格,所以我想仅对最多 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/

相关文章:

python - 我应该如何在 Django 中编写 View 单元测试?

Python Flask - 重定向到带有查询结果的同一页面

python - Python + Pandas 中的差异

python - 按列中的值对数据框进行采样并保留所有行

python - 如何在特定列中选择具有 NaN 的行?

Python ssl 登录卡在 Debian 上

python - cgi python 脚本似乎没有从 html 表单接收上传的文件

python - 在 Visual Studio Code 中的同一项目文件夹中使用 python 包

python - 滚动最大值不包括 Pandas 1.0 中的当前观察值

python - 识别 df 行之间的公共(public)元素以创建新列