问题描述
这样的数据框
df = pd.DataFrame({"A":[1,np.nan,5],"B":[np.nan,10,np.nan],"C":[2,3,np.nan]})
A B C
0 1 NaN 5
1 NaN 10 NaN
2 2 3 NaN
我想左移所有值以占据空值。期望输出:
A B C
0 1 5 NaN
1 10 NaN NaN
2 2 3 NaN
我尝试使用一系列 df['A'].fillna(df['B'].fillna(df['C'])
来执行此操作,但在我的实际数据中,有 100 多列。有没有更好的方法来做到这一点?
解决方法
让我们做
out = df.T.apply(lambda x : sorted(x,key=pd.isnull)).T
Out[41]:
A B C
0 1.0 5.0 NaN
1 10.0 NaN NaN
2 2.0 3.0 NaN