用最大列填充NaNs

时间:2019-02-01 00:14:16

标签: python pandas nan

我的数据:

df = pd.DataFrame({'a':[2, np.nan, 2, np.nan],
                   'b':[np.nan, np.nan, 3, 3]})

a      b
2      np.nan
np.nan np.nan
2       3
np.nan  3

希望获得

a      b
2      3
2      3
2      3
2      3

尝试过填充

df = df.ffill()
a      b
2      np.nan
2      np.nan
2      3
2      3

尝试进行正向填充,但是因为我在b中将nan作为第一行,所以我仍然在b中使用nan。我该如何填充每一行的唯一值呢? (所有列均具有重复值或np.nan)

1 个答案:

答案 0 :(得分:1)

绑定一个bfill通话:

df.ffill().bfill()

     a    b
0  2.0  3.0
1  2.0  3.0
2  2.0  3.0
3  2.0  3.0

要在可能的情况下允许将熊猫降落到int s,请使用

df.ffill().bfill(downcast='infer')

   a  b
0  2  3
1  2  3
2  2  3
3  2  3

另一个选项是fillnamax

df.fillna(df.max(), downcast='infer')

   a  b
0  2  3
1  2  3
2  2  3
3  2  3

max会忽略NaN,因此是一个很好的选择。