1

I need to rearrange the data within the same row of the dataframe, where some columns may have no data. The original dataframe:

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

The dataframe that I expected to have:

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
Tony
  • 51
  • 5

1 Answers1

1

You can use justify from 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
yatu
  • 86,083
  • 12
  • 84
  • 139