python - 如何加速简单的 Pandas for/if 循环?

标签 python pandas

我有一个相当简单的循环,运行良好,但比我想象的要长得多(大约 5 分钟)。

for i in range(len(df)):
    if pd.isnull(df['Date'][i]):
        df['Date'][i] = df['Date'][i-1]

这里的目的是修复我拥有的数据文件中的日期和时间,该文件的结构是每天的第一行包含日期文本,但其他所有行都是空白。我只是想看看该值是否为 null,如果是,则将其设置为之前的值。

enter image description here

有没有更像 Pandas 的方式来更有效地做到这一点?

谢谢, 本

最佳答案

使用正向填充ffill

df.Date.ffill(inplace=True)

演示

df = pd.DataFrame(dict(
        Date=['Wed', None, None, 'Thr', None, None],
        Time=[1, 2, 3, 4, 5, 6]
    ))

df

   Date  Time
0   Wed     1
1  None     2
2  None     3
3   Thr     4
4  None     5
5  None     6

然后

df.Date.ffill(inplace=True)

df

  Date  Time
0  Wed     1
1  Wed     2
2  Wed     3
3  Thr     4
4  Thr     5
5  Thr     6

关于python - 如何加速简单的 Pandas for/if 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44581674/

相关文章:

python - 尝试在 pyOpenGL 中绘制一个简单的正方形

python - Django:将 URL 参数附加到列表?

python - 从另一个数据帧更新数据帧不起作用

python - pandas 数据框中多标签分类数据集的迭代分割

python - Pandas - .pivot()

python - 用 C 扩展 Python、numpy——代码还好吗?

python - Savitzky-Golay 过滤器的 Scipy 实现

python - Pandas 字典到数据框 - 列乱序?

python - 如何删除pandas数据框中的特殊字符

python - 如何添加具有相同名称的 pandas 列的值?