简体   繁体   English

对于 pandas 列中的每个唯一值,对其他列进行排序

[英]For each unique value in pandas column, sort other columns

I have a pandas dataframe as follows.我有一个 pandas dataframe 如下。

id      name      order
104337  CCC       7.0
104337  BBB       8.0
104337  AAA       9.0
104341  EE        1.0
104341  DD        2.0

I would like to group it by id with reversing the order for each id as follows.我想按id对它进行分组,并将每个idorder颠倒如下。

id      name.     order
104337  AAA        9.0
104337  BBB        8.0
104337  CCC        7.0                  
104341  DD         2.0
104341  EE         1.0

I have tried df.groupby('id').apply(f) but I am confused how to create f function for my desired output.我已经尝试过df.groupby('id').apply(f)但我很困惑如何为我想要的 output 创建f function。

Let's try我们试试看

out = (df.groupby('id', as_index=False)
       .apply(lambda g: g.sort_values('order', ascending=False))
       .reset_index(drop=True))
print(out)

       id name  order
0  104337  AAA    9.0
1  104337  BBB    8.0
2  104337  CCC    7.0
3  104341   DD    2.0
4  104341   EE    1.0

You can first do groupby.apply then do sort_values too.你可以先做groupby.apply然后再做sort_values

df.groupby('id').apply(lambda x:x).sort_values('order', ascending=False)

       id name  order
2  104337  AAA    9.0
1  104337  BBB    8.0
0  104337  CCC    7.0
4  104341   DD    2.0
3  104341   EE    1.0

I have solved it I think using the following code.我已经解决了我认为使用以下代码。

df.sort_values(['order'],ascending=False).groupby('id').apply(lambda x: x['name'])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM