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

3

我有一个如下的csv文件:

enter image description here

我希望将第一行中的所有0替换为该列中的下一个非0值——例如,在上面的'momentum_ao'列中,第一行应更改为0.1439166667,'others_dlr'列的第一行应为0.9153612171等(第二行及以下不变)。在pandas中应如何完成此操作?由于此csv有数十列,因此我希望找到一种不需要手动输入和逐个迭代列的解决方案。

1
请勿发布数据图像,而是请发布示例数据的代码。 - tawab_shakeel
2个回答

2
这应该可以完成任务。只需用np.nan值填充零,向后填充,然后取第一行并重新分配给原始数据框即可。将原始答案翻译为“最初的回答”。
df.iloc[0, :] = df.replace(0, np.nan).bfill().iloc[0, :]

2
将0替换为nan
使用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()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接