У меня есть этот фрейм данных:
user1 user2 quantity
--------------------------
Alice Carol 10
Alice Bob 5
Bob Dan 2
Carol Eve 7
Carol Dan 100
Я хочу ранжировать каждую строку в порядке убывания, используя количество, НО по пользователю 1. Пример:
user1 user2 quantity order
----------------------------------
Alice Carol 10 1
Alice Bob 5 2
Bob Dan 2 1
Carol Eve 7 2
Carol Dan 100 1
В настоящее времямой код выглядит следующим образом:
users = df['user1'].unique()
for user in users:
cond = (df['user1'] == user)
sort_ser = df[cond]['quantity'].values.argsort()[::-1] # descending
df.loc[cond, 'order'] = sort_ser + 1
Это работает - для небольших кадров данных.Но это медленно, если это для больших.Я думаю, это потому, что (1) я в основном запускаю его для каждого пользователя, и (2) происходит несколько сортировок.Есть ли более быстрый способ сделать это?