2015-05-24 44 views
5

Tôi có một khung dữ liệu có ID phiên đấu giá và giá thầu. Các dataframe được sắp xếp theo id đấu giá (tăng dần) và giá dự thầu (giảm dần):Pandas xếp hạng theo giá trị cột

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

Tôi muốn thêm một cột gọi là 'Auction_Rank' mà đứng id đấu giá bằng giá dự thầu:

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 

Trả lời

16

Dưới đây là một cách để làm điều đó trong Pandas chiều

Bạn có thể groupby trên Auction_ID và chịu rank() trên Bid_Price với 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 
Các vấn đề liên quan