J'ai une trame de données qui a des identifiants d'enchères et des prix d'enchères. La trame de données est triée par identifiant d'enchère (croissant) et prix d'offre (décroissant):
Auction_ID Bid_Price
123 9
123 7
123 6
123 2
124 3
124 2
124 1
125 1
Je voudrais ajouter une colonne intitulée "Auction_Rank" qui classe les identifiants d'enchères par prix d'enchère:
Auction_ID Bid_Price Auction_Rank
123 9 1
123 7 2
123 6 3
123 2 4
124 3 1
124 2 2
124 1 3
125 1 1
Voici une façon de le faire dans Pandas-way
Vous pouvez groupby
sur Auction_ID
Et prendre rank()
sur Bid_Price
Avec ascending=False
In [68]: df['Auction_Rank'] = df.groupby('Auction_ID')['Bid_Price'].rank(ascending=False)
In [69]: df
Out[69]:
Auction_ID Bid_Price Auction_Rank
0 123 9 1
1 123 7 2
2 123 6 3
3 123 2 4
4 124 3 1
5 124 2 2
6 124 1 3
7 125 1 1