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