我想通过从前一行的非零值向前填充来替换数据中的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