gpt4 book ai didi

python - 在 Pandas 中如何根据列的值对多索引的一个级别进行排序,同时保持另一级别的分组

转载 作者:太空狗 更新时间:2023-10-29 21:09:58 29 4
gpt4 key购买 nike

我现在正在大学学习数据挖掘类(class),但我有点卡在多索引排序问题上。

实际数据涉及大约 100 万条电影评论,我正在尝试根据美国邮政编码对其进行分析,但为了测试如何做我想做的事情,我一直在使用一个小得多的数据集为 10 部电影随机生成 250 个评分,我使用的不是邮政编码,而是年龄组。

这就是我现在拥有的,它是 Pandas 中的多索引 DataFrame,具有两个级别,“group”和“title”

                        rating
group title
Alien 4.000000
Argo 2.166667
Adults Ben-Hur 3.666667
Gandhi 3.200000
... ...

Alien 3.000000
Argo 3.750000
Coeds Ben-Hur 3.000000
Gandhi 2.833333
... ...

Alien 2.500000
Argo 2.750000
Kids Ben-Hur 3.000000
Gandhi 3.200000
... ...

我的目标是根据标题在组内的评分对标题进行排序(并且只显示每个组中最受欢迎的 5 个左右的标题)

像这样(但我只打算在每组中显示两个标题):

                        rating
group title
Alien 4.000000
Adults Ben-Hur 3.666667

Argo 3.750000
Coeds Alien 3.000000

Gandhi 3.200000
Kids Ben-Hur 3.000000

有人知道怎么做吗?我试过 sort_order、sort_index 等并交换级别,但它们也混淆了组。所以它看起来像:

                          rating
group title
Adults Alien 4.000000
Coeds Argo 3.750000
Adults Ben-Hur 3.666667
Kids Gandhi 3.666667
Coeds Alien 3.000000
Kids Ben-Hur 3.000000

我正在寻找这样的东西:Multi-Index Sorting in Pandas ,但我不想根据另一个级别进行排序,而是希望根据值进行排序。有点像那个人想根据他的销售列进行排序。

谢谢!

最佳答案

您正在寻找 sort :

In [11]: s = pd.Series([3, 1, 2], [[1, 1, 2], [1, 3, 1]])

In [12]: s.sort()

In [13]: s
Out[13]:
1 3 1
2 1 2
1 1 3
dtype: int64

注意;这在原地工作(即修改 s),返回副本使用 order :

In [14]: s.order()
Out[14]:
1 3 1
2 1 2
1 1 3
dtype: int64

更新:我意识到你实际上在问什么,我认为这应该是 sortlevels 中的一个选项,但现在我认为你必须 reset_index、groupby 和 apply:

In [21]: s.reset_index(name='s').groupby('level_0').apply(lambda s: s.sort('s')).set_index(['level_0', 'level_1'])['s']
Out[21]:
level_0 level_1
1 3 1
1 3
2 1 2
Name: 0, dtype: int64

注意:之后您可以将级别名称设置为 [None, None]。

关于python - 在 Pandas 中如何根据列的值对多索引的一个级别进行排序,同时保持另一级别的分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413313/

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