大熊猫按列值排名

Chr*_*ins 23 rank dataframe pandas

我有一个包含拍卖ID和出价的数据框.数据框按拍卖ID(升序)和出价(降序)排序:

Auction_ID    Bid_Price
123           9
123           7
123           6
123           2
124           3
124           2
124           1
125           1
Run Code Online (Sandbox Code Playgroud)

我想添加一个名为"Auction_Rank"的列,按照出价对拍卖ID进行排名:

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
Run Code Online (Sandbox Code Playgroud)

Zer*_*ero 37

这是在Pandas方式做到这一点的一种方法

你可以分组groupbyAuction_ID继续rank()使用Bid_Price

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
Run Code Online (Sandbox Code Playgroud)

  • @Zero 这个答案对我不起作用。代码: df = pd.DataFrame({'Auction_ID':[1,2,3,4], 'Bid_Price':[7, 10, 5, 3]}); df['Auction_Rank'] = df.groupby('Auction_ID')['Bid_Price'].rank(ascending=False); df 在 Auction_Rank 列中产生 [1,1,1,1]。 (3认同)