替换0s并从同一行的列向前填充



我想通过从前一行的非零值向前填充来替换数据中的0s。

我使用了以下代码,但这替换了上面一行的0s,而不是同一行:

df.replace(to_replace=0, method='ffill')

在上面的代码中,我无法将轴指定为1。

下面的代码正是我想要的,但只针对NaN。

columns.fillna(method='ffill',axis=1)
A B C D
1 4 0 0
2 7 8 0
3 8 0 0
4 1 0 0

例如,在上面的df的第一行中,我想将0替换为"0";4〃;对于下面的行,将0替换为8。

感谢

您可以(1(transpose(2(replace,然后再(3(transpose

df.T.replace(0, method='ffill').T
#output:
A   B   C   D
0   1   4   4   4
1   2   7   8   8
2   3   8   8   8
3   4   1   1   1

这应该有效:

x=pd.DataFrame({'A':[1, 2, 3,4],'B':[4, 7, 8, 1],'C':[0, 8, 0, 0],'D':[0, 0, 0, 0]})
x_new=x.apply(lambda y: y.replace(to_replace=0, method='ffill'),axis=1)
x_new
>>  A   B   C   D
0   1   4   4   4
1   2   7   8   8
2   3   8   8   8
3   4   1   1   1

最新更新