首页 > 解决方案 > Pandas:用列中的下一个非零值替换第一行中的所有 0?

问题描述

我有一个如下的csv:

在此处输入图像描述

我想用该列中的下一个非 0 值替换第一行中的任何 0 - 例如。在上面的 'momentum_ao' 的第一行应该更改为 0.1439166667,'others_dlr' 列的第一行应该是 0.9153612171 等(第二行及以下将保持不变)。这应该如何在熊猫中完成?这个 csv 有几十列,所以我想要一个不涉及手动输入和逐一遍历列的解决方案。

标签: pythonpandas

解决方案


这应该可以完成工作。只需用np.nan值填充零,回填,然后取第一行并将其重新分配给原始数据帧。

df.iloc[0, :] = df.replace(0, np.nan).bfill().iloc[0, :]

推荐阅读