保留第二级的多索引,同时在第一级上进行排序pandas python

2024-04-26 05:38:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经使用以下方法对我的第一级索引进行了排序: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

Tags: 方法pandasdffor排序mydefcustom
1条回答
网友
1楼 · 发布于 2024-04-26 05:38:10

我认为您需要稳定的排序algo-mergesort

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

相关问题 更多 >

    热门问题