我正在尝试按列的层次结构/顺序对groupby的结果进行排序。
Dataframe 示例:
df = pd.DataFrame({'A':['A1','A1','A1','A2','A2','A2','A1','A1'],
'B':['B2','B1','B1','B1','B1','B2','B2','B2'],
'C':['C1','C3','C1','C3','C2','C2','C1','C3'],
'V':[100,240,110,120,50,60,40,40]})
然后执行groupby操作:
df.groupby(['A','B','C']).agg({'V':'sum'}).sort_values(by=['A','V','B','V'],ascending=[False,False,False,False])
输出:
V
A B C
A2 B1 C3 120
B2 C2 60
B1 C2 50
A1 B1 C3 240
B2 C1 140
B1 C1 110
B2 C3 40
然而,我想要的是A1应该首先基于它自己的总值排序(不管B和C值如何),然后B基于它自己的总值排序。
因此输出应该如下所示:
V
A B C
A1 B1 C3 240
B1 C1 110
B2 C1 140
B2 C3 40
A2 B1 C3 120
B1 C2 50
B2 C2 60
如果我能解释清楚就告诉我。
2条答案
按热度按时间vuktfyat1#
aelbi1ox2#
IIUC,您希望同时按
A
、B
和V
列进行排序