簡體   English   中英

如何基於其他列在Python中創建等級列

[英]How to create rank column in Python based on other columns

我有一個看起來像以下的python數據框:

在此處輸入圖片說明

該數據框已按'transaction_count'降序排列。 我想在該數據幀中創建另一個列“ rank”,其中包含cust_ID的出現次數。 我的願望輸出如下所示:

在此處輸入圖片說明

對於cust_ID = 1234,transaction_count = 4,等級將為1,對於下一次出現的cust_ID = 1234,等級將為2,依此類推。

除其他外,我嘗試了以下方法:

df['rank'] = df["cust_ID"].value_counts()
df.head(10)

但是等級列會被創建為所有NaN值 在此處輸入圖片說明

任何有關如何解決此問題的建議將不勝感激!

使用groupby + cumcount

df['rank'] = df.groupby('cust_ID').cumcount() + 1
print(df['rank'])

輸出量

0    1
1    2
2    1
3    1
4    2
5    3
Name: rank, dtype: int64

你可以做:

df['rank'] = df.groupby('cust_ID')['transaction_count'].rank(ascending=False)

輸出:

    cust_ID     associate_ID    transaction_count   rank
0   1234           608          4                   1.0
1   1234           785          1                   2.0
2   4789           345          2                   1.0
3   3456           268          5                   1.0
4   3456           725          3                   2.0
5   3456           795          1                   3.0

請注意,這不僅基於transaction_count值給出計數,而且還給出交易的等級。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM