2015-05-24 20 views
5

Mam ramkę danych, która ma identyfikatory aukcji i ceny ofertowe. Dataframe jest posortowana według id aukcji (rosnąco) a ceną kupna (malejąco):Ranking pand według wartości kolumny

Auction_ID Bid_Price 
123   9 
123   7 
123   6 
123   2 
124   3 
124   2 
124   1 
125   1 

Chciałbym dodać kolumnę o nazwie „Auction_Rank”, który plasuje id aukcyjnego cenami oferta:

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 

Odpowiedz

16

Oto jeden ze sposobów, aby to zrobić w pandy drogi

można GroupBy na Auction_ID i wziąć rank() na Bid_Price z 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 
Powiązane problemy