更改 pandas 的轴替换填充

kon*_*wka 3 python dataframe pandas fillna

假设我有一个如下所示的数据框:

df =
       0    1    2
  0  1.0  2.0  3.0
  1  4.0  5.0  NaN
  2  6.0  NaN  NaN
Run Code Online (Sandbox Code Playgroud)

然后可以使用df.fillna(method='ffill', axis=1)来获得:

     0    1    2
0  1.0  2.0  3.0
1  4.0  5.0  5.0
2  6.0  6.0  6.0
Run Code Online (Sandbox Code Playgroud)

即我向前填充行。但是,现在我有一个数据框-1而不是np.nan. Pandas 的replace函数也可以使用method='ffill',但replace()不接受轴参数,因此要获得与上面相同的结果,我需要调用df.T.replace(-1, method='ffill').T. 由于转置非常昂贵(特别是考虑到我正在处理多个千兆字节的数据帧),因此这不是一个选择。我怎样才能达到想要的结果?

piR*_*red 5

使用maskffill

df.mask(df.eq(-1)).ffill(axis=1)

     0    1    2
0  1.0  2.0  3.0
1  4.0  5.0  5.0
2  6.0  6.0  6.0
Run Code Online (Sandbox Code Playgroud)