[英]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
对它进行分组,并将每个id
的order
颠倒如下。
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.