熊猫排序多列

coding_monkey

我有以下数据框

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_valueson进行排序_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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章