我需要在数据帧的同一行中重新排列数据,其中某些列可能没有数据。原始数据框:
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
答案 0 :(得分:1)
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