python - 在 Pandas 中,如何在没有 for 循环的情况下用不超过 4 行的最后一个非零值替换所有零值?

标签 python pandas fill zero

如果我的数据框列之一如下所示:

5
0
0
0
0
0
6
0

应该是这样的

5
5
5
5
5
0
6
6

我知道如何使用循环和计数器来完成它,但我想知道如何在没有 for 循环的情况下完成它?

最佳答案

你甚至不需要屏蔽,有方法 replace允许您指定 limitmethod='ffill'。通过 Nan 也会转换为不需要的 float 。

import pandas as pd

df = pd.DataFrame({'a': [5, 0, 0, 0, 0, 0, 6, 0]})

# Replace 0s with forward fill and limit set to 4 elements
df2 = df.replace(0, limit=4, method='ffill')

print(df)

   a
0  5
1  5
2  5
3  5
4  5
5  0
6  6
7  6

关于python - 在 Pandas 中,如何在没有 for 循环的情况下用不超过 4 行的最后一个非零值替换所有零值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63270852/

相关文章:

python - 在 Heroku 上发送 Django 电子邮件

python - 接下来 n 行的 Pandas 总和

Python Pandas DF - 将列与另一列的相应频率计数分组

python - Pandas 索引缺失值

wpf - WPF中的对接/填充

javascript - 使用 JavaScript 填写表单

python sys.stdin.read() 来自 tail -f

python - 找到另一个具有目标路径的文件 - 那个文件在哪里?

python - 合并两个镜像 Pandas 列

matlab - 用某种颜色填充多边形