numpy 基于argsort结果的Python排序数据框

unftdfkk  于 2022-12-23  发布在  Python
关注(0)|答案(2)|浏览(125)

我有一个panda数据框df,我想根据从argsort函数中得到的索引对每一行的值进行排序,得到的索引如下:

idx = np.argsort(df, axis=1)

现在我想使用结果idx来排序df的所有行,以及具有相同形状的不同 Dataframe (我们称之为df2)的所有行。但是我无法实现这一点。我尝试使用df[idx]排序它没有成功。非常感谢任何帮助。

tcomlyy6

tcomlyy61#

df.iloc[idx]df.loc[idx]是否可以实现此功能?

ffscu2ro

ffscu2ro2#

我设法达到了我想要的。这可能不是最干净的解决方案,但它确实起到了作用:

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)

相关问题