我的数据:
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)
答案 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
另一个选项是fillna
和max
。
df.fillna(df.max(), downcast='infer')
a b
0 2 3
1 2 3
2 2 3
3 2 3
max
会忽略NaN,因此是一个很好的选择。