MultiIndex Dataframe:对每个组的值进行排序

问题描述 投票:0回答:1

假设我有一个类似于下面的

pandas
MultiIndex Dataframe。如何通过保留索引的分配和顺序来对每个组的值进行排序?下面的代码适用于排序,但我无法重新保存排序后的值,并且
inplace
似乎不起作用。

df = pd.DataFrame([4,8,6,11,13,15], columns=['val'],
    index=[['A','A','A','B','B','B'],['a1','a2','a3','b1','b2','b3']])

#         val
#  A  a1    4
#     a2    8
#     a3    6
#  B  b1   11
#     b2   13
#     b3   15


for idx in df.index.unique(level=0):
    tmp = df.loc[idx].sort_values(by='val')

#      val
#  a1    4
#  a3    6
#  a2    8

python pandas group-by
1个回答
0
投票

如果我理解正确,你想保持索引不变,只需对“val”值进行排序:

df["val"] = df.groupby(level=0)["val"].apply(pd.Series.sort_values).values
print(df)

打印:

      val
A a1    4
  a2    6
  a3    8
B b1   11
  b2   13
  b3   15
© www.soinside.com 2019 - 2024. All rights reserved.