如何重新排列熊猫数据框的每一行

时间:2019-04-19 17:50:36

标签: python pandas

我需要在数据帧的同一行中重新排列数据,其中某些列可能没有数据。原始数据框:

hash   a1   a2   a3    a4    a5   
0      1    2    nan   nan   nan  
1      1    nan  nan   nan   nan   
2      1    2    3     nan   nan   
3      1    2    3     4     5

我期望具有的数据框:

hash   a1     a2     a3    a4    a5   
0      nan    nan    nan   1     2      
1      nan    nan    nan   nan   1   
2      nan    nan    1     2     3        
3      1      2     3      4     5

1 个答案:

答案 0 :(得分:1)

您可以使用justify中的this post

a = justify(df.loc[:,'a1':].values, invalid_val=np.nan, side='right')
print(a)

array([[nan, nan, nan,  1.,  2.],
       [nan, nan, nan, nan,  1.],
       [nan, nan,  1.,  2.,  3.],
       [ 1.,  2.,  3.,  4.,  5.]])

pd.DataFrame(a, columns = df.loc[:,'a1':].columns).assign(hash=df.hash)

    a1   a2   a3   a4   a5  hash
0  NaN  NaN  NaN  1.0  2.0     0
1  NaN  NaN  NaN  NaN  1.0     1
2  NaN  NaN  1.0  2.0  3.0     2
3  1.0  2.0  3.0  4.0  5.0     3