假设我有一个类似于下面的
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
如果我理解正确,你想保持索引不变,只需对“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