gpt4 book ai didi

python - 在第一个 pandas python 上排序时保持第二级多索引完整

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:50 24 4
gpt4 key购买 nike

我使用以下方法对第一级索引进行了排序:Custom sort order function for groupby pandas python

def my_func(group):
return sum(group["B"]*group["C"])

idx=df.groupby('A').apply(my_func).reindex(df.index.get_level_values(0))
df.iloc[idx.argsort()]

问题在于,在第一级排序后,第二级排序变得困惑。如何确保集团内订单得到保留?

来自

A   B C
1 0 1 8
1 3 3
2 0 1 2
1 2 2
3 0 1 3
1 2 4

A   B C
2 0 1 2
1 2 2
3 0 1 3
1 2 4
1 0 1 8
1 3 3

而不是(最后两行反转)

A   B C
2 0 1 2
1 2 2
3 0 1 3
1 2 4
1 1 3 3
0 1 8

最佳答案

我认为你需要稳定的排序algo - 合并排序:

idx=df.index.get_level_values(0).map(df.groupby('A').apply(my_func))
df = df.iloc[idx.argsort(kind='mergesort')]
print (df)
B C
A
2 0 1 2
1 2 2
3 0 1 3
1 2 4
1 0 1 8
1 3 3

关于python - 在第一个 pandas python 上排序时保持第二级多索引完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56036466/

24 4 0
文章推荐: python - 将引擎从 dot 更改为 neato 时未找到 graphviz PATH 变量
文章推荐: css - 如何在调整大小时阻止
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com