如果我有一个如下所示的数据框,其中user和item是索引。
user item value
2 a 5555
b 7777
3 c 9999
d 2222
1 e 6666
我将如何对值进行相应的排序,但是如果两个项目具有相同的用户,则无论如何将它们保持在一起?
user item value
3 c 9999
d 2222
2 b 7777
a 5555
1 e 6666.
要获得类似上面的内容。按用户的最大值进行排序,但具有相同用户的项目将保持在一起。
答案 0 :(得分:2)
IIUC,您要按每个组中的最大值排序,然后按每行的值排序:
Name: All-Projections
StreamName: $events
Position: 1200 <-- This is updated by the observer as it reads
BufferSize: 100 <-- Number of records to read at a time
Name: Customers-Rebuild
StreamName: $events-CustomerAggregate
Position: 0 <-- This consumer has not run yet
BufferSize: 100
输出:
# max value for each user
df['max_val'] = df.groupby('user')['value'].transform('max')
(df.sort_values(['max_val', 'user', 'value'], ascending=False)
.drop('max_val', axis=1) # drop the max value
)
答案 1 :(得分:-1)
尝试此操作即可。不知道您的表架构的正确名称,但我假设项目和用户具有ID。 table1
和table2
SELECT `user_id`, `user`, `item_id`, `item`
FROM `table1`.`users`
LEFT JOIN `table2`.`items` ON
`user`.`user_id` ON `item_id`.`user_id`
WHERE `users`.`user` IS NOT NULL GROUP BY `users`.`usr_id` ORDER BY `item`.`item_id`
DESC, `item_id` ASC