我有以下数据框
A B
b 10
b 5
a 25
a 5
c 6
c 2
b 20
a 10
c 4
c 3
b 15
我如何按如下方式对其进行排序:
A B
b 20
b 15
b 10
b 5
a 25
a 10
a 5
c 6
c 4
c 3
c 2
A列根据B列中相应值的总和按降序排序(总和为b-50,a-40,c-15)。
答案 0 :(得分:2)
创建临时列_t
并使用sort_values
上的_t, B
进行排序
In [269]: (df.assign(_t=df['A'].map(df.groupby('A')['B'].sum()))
.sort_values(by=['_t', 'B'], ascending=False)
.drop('_t', 1))
Out[269]:
A B
6 b 20
10 b 15
0 b 10
1 b 5
2 a 25
7 a 10
3 a 5
4 c 6
8 c 4
9 c 3
5 c 2
详细
In [270]: df.assign(_t=df['A'].map(df.groupby('A')['B'].sum()))
Out[270]:
A B _t
0 b 10 50
1 b 5 50
2 a 25 40
3 a 5 40
4 c 6 15
5 c 2 15
6 b 20 50
7 a 10 40
8 c 4 15
9 c 3 15
10 b 15 50