gpt4 book ai didi

pandas - 按系列对 Pandas 数据框进行排序

转载 作者:行者123 更新时间:2023-12-02 17:28:26 24 4
gpt4 key购买 nike

Pandas 数据框可以按其列的值排序,但我想按我不想添加到数据框的系列的值对数据框进行排序 - 尽管它具有相同的索引。

我通过将系列添加到数据框(作为列)、排序并再次删除该列来对我的数据框进行排序。在示例代码中,nprojnpercent 是我的数据框,total 是我的系列:

nprojnpercent["total"]=total
nprojnpercent.sort_values(by="total",ascending=False,inplace=True)
nprojnpercent.pop("total")

它有效,但对我来说似乎很奇怪。有没有更简单的方法来按系列排序数据框?

最佳答案

sort_values 返回排序后的系列,因此取其索引并将其命名为 idx。因为 s 的索引对应于 df 的索引,所以可以使用 locidx 重新排列基于 `s 的排序值的行。

np.random.seed(0)
df = pd.DataFrame(np.random.randn(5,3), columns=list('ABC'))
s = pd.Series(np.random.randn(5), name='C')

>>> df
A B C
0 1.764052 0.400157 0.978738
1 2.240893 1.867558 -0.977278
2 0.950088 -0.151357 -0.103219
3 0.410599 0.144044 1.454274
4 0.761038 0.121675 0.443863

>>> s
0 0.333674
1 1.494079
2 -0.205158
3 0.313068
4 -0.854096
Name: C, dtype: float64

idx = s.sort_values().index

>>> df.loc[idx]
A B C
4 0.761038 0.121675 0.443863
2 0.950088 -0.151357 -0.103219
3 0.410599 0.144044 1.454274
0 1.764052 0.400157 0.978738
1 2.240893 1.867558 -0.977278

关于pandas - 按系列对 Pandas 数据框进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36670530/

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