gpt4 book ai didi

python - Pandas - 如何根据两个 DataFrame 之一给出的顺序对它们进行排序?

转载 作者:行者123 更新时间:2023-12-01 04:40:24 25 4
gpt4 key购买 nike

如果我有一个 Pandas DataFrame,我希望按其中一列进行排序,那么我可以将一个单独的 DataFrame 与其一起排序吗? sort 在另一个 DataFrame 上执行的排列与在正在排序的 DataFrame 上执行的排列相同?

请注意,我不能依赖两个 DataFrame 的行索引最初的顺序相同。

其他信息@ami-tavory 的解决方案似乎不适用于我的 .ix 索引。但是,如果我将其更改为 .iloc,它确实可以工作。我无法在 @ami-tavory 的示例代码上重现这一点,但我正在使用的数据帧具有以下布局:

>>> fails_sorted_old.dtypes
image object
sampling_pattern object
delta float64
reconstruction_algorithm object
psnr float64
ssim float64
time float64
dtype: object

>>> fails_sorted_old.shape
(126, 7)

当我这样做时:

idx_by_old_psnr = fails_sorted_old.psnr.argsort()

然后:

fails_sorted_old.ix[idx_by_old_psnr]

给了我一个充满NaNDataFrame,而这工作正常:

fails_sorted_old.iloc[idx_by_old_psnr]

最佳答案

假设您从两个数据帧开始:

df0 = pd.DataFrame({
'a': [1, 2, 4, 3],
'b': ['a', 'b', 'c', 'd']
})
df1 = pd.DataFrame({
'f': range(4),
})

这样:

>> df0
a b
0 1 a
1 2 b
2 4 c
3 3 d

>> df1
f
0 0
1 1
2 2
3 3

现在,使用 np.argsort ,您可以找到按 a 排序的 df0 索引:

import numpy as np

sorted_inds = np.argsort(df0.a)

并且,通过这些,(完成一次排序)您可以对数据帧进行排序:

df0 = df0.ix[sorted_inds]
df1 = df1.ix[sorted_inds]

所以你有:

>> df0
a b
0 1 a
1 2 b
3 3 d
2 4 c

>> df1
f
0 0
1 1
3 3
2 2

关于python - Pandas - 如何根据两个 DataFrame 之一给出的顺序对它们进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30800081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com