Python 从左到右填充列
我目前正在处理一个熊猫问题,我想知道这个问题是否有一个简单的解决方法 我的pandas表的格式如下所示: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
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)