熊猫:将第一行中的所有0替换为列中的下一个非零值?

时间:2019-07-02 04:22:45

标签: python pandas

我的csv如下:

enter image description here

我想用该列中的下一个非0值替换第一行中的任何0-例如在上方,“ momentum_ao”的第一行应更改为0.1439166667,“ others_dlr”列的第一行应为0.9153612171,以此类推(第二行及更低的行将保持不变)。在熊猫中应该怎么做?这个csv有数十列,所以我想要一个不涉及手动输入和逐列遍历的解决方案。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

用nan替换0
使用bfill()

import numpy as np
cols = list(df.columns)

# check if zero exist in string or integer

df2[cols] = df2[cols].replace({0:np.nan})

df[cols] = df[cols].bfill()