我有以下数据框
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)。
最佳答案
创建临时列_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
关于python - Pandas 对多列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48005035/