繁体   English   中英

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

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

我有一个 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

我想按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

我已经尝试过df.groupby('id').apply(f)但我很困惑如何为我想要的 output 创建f function。

我们试试看

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

你可以先做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

我已经解决了我认为使用以下代码。

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