I have a pandas data frame df
, where I would like to sort the values in each row based on the indices I get from the argsort
function. I get the indices as follows:
idx = np.argsort(df, axis=1)
Now I would like to use the result idx
to sort all rows of df
, as well as all rows of a different data frame (let's call it df2
) with the same shape. I am however unable to achieve this. My attempt to sort it using df[idx]
didn't work. Any help is greatly appreciated.
CodePudding user response:
Does df.iloc[idx]
or df.loc[idx]
do the trick?
CodePudding user response:
I managed to achieve what I want. It's probably not the cleanest solution but it does the trick:
idx = np.argsort(df, axis=1)
df_sorted = pd.DataFrame(data=np.take_along_axis(df.to_numpy(), idx.to_numpy(), axis=1), columns=df.columns)