[英]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
对它进行分组,并将每个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
我已经尝试过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.