Python 从左到右填充列

Python 从左到右填充列,python,pandas,Python,Pandas,我目前正在处理一个熊猫问题,我想知道这个问题是否有一个简单的解决方法 我的pandas表的格式如下所示: df = pd.DataFrame({'A':[1,2,np.nan,np.nan,3],'B':[2,3,np.nan,5,2],'C':[2,3,7,5,9],'D':[1,2,3,np.nan,np.nan]} ) 此数据帧应转换为: df = pd.DataFrame({'A':[1,2,7,5,3],'B':[2,3,3,5,2],'C':[2,3,np.nan,np.nan,9

我目前正在处理一个熊猫问题,我想知道这个问题是否有一个简单的解决方法

我的pandas表的格式如下所示:

df = pd.DataFrame({'A':[1,2,np.nan,np.nan,3],'B':[2,3,np.nan,5,2],'C':[2,3,7,5,9],'D':[1,2,3,np.nan,np.nan]} )
此数据帧应转换为:

df = pd.DataFrame({'A':[1,2,7,5,3],'B':[2,3,3,5,2],'C':[2,3,np.nan,np.nan,9],'D':[1,2,np.nan,np.nan,np.nan]} )
这意味着列中的所有值都需要尽可能向左移动。(第一列需要填写,第二列需要填写,等等)有没有简单的解决办法


非常感谢。

使用自定义函数
justify
,仅将数据帧转换为numpy数组:

#https://stackoverflow.com/a/44559180/2901002
df = pd.DataFrame(justify(df.to_numpy(),invalid_val=np.nan), columns=df.columns)
#pandas < 0.24
#df = pd.DataFrame(justify(df.values,invalid_val=np.nan), columns=df.columns)
print (df)
     A    B    C    D
0  1.0  2.0  2.0  1.0
1  2.0  3.0  3.0  2.0
2  7.0  3.0  NaN  NaN
3  5.0  5.0  NaN  NaN
4  3.0  2.0  9.0  NaN
df = df.apply(lambda x: pd.Series(x.dropna().to_numpy()), axis=1)
#pandas < 0.24
#df = df.apply(lambda x: pd.Series(x.dropna().values), axis=1)