[英]Can I Customize Category Codes?
我正在處理一些稱為“評級”的分類數據。 我的數據看起來像這樣(在數據框中):
AAA
AA
A
A+
BBB
BB
B
B+
我有大約 25 個類別。 現在,我正在嘗試獲取與此 Ratings 字段相關的相應字段。 我想看看這個:
30
29
28
27
26
25
24
23
... 最后降到 1。 到目前為止,我已經測試了這一小段代碼。
modDF['Rating'] = modDF['Rating'].astype('category')
modDF['RatingCode'] = modDF['Rating'].cat.codes
這給了我類別,但不是根據我想使用的邏輯。 它幾乎看起來像是在工作,但順序相反,但帶有“+”字符的評級看起來很奇怪。 有沒有辦法根據某種 vlookup 或類似的東西來分配類別代碼? 謝謝。
如果您知道評級將遵循某種模式(即 XXX、XX、XX、X+),您可以執行以下操作:
import pandas as pd
import itertools
import string
# df with dummy data
df = pd.DataFrame(['AAA', 'AA', 'A', 'A+', 'BBB', 'BB', 'B', 'B+'], columns=['Ratings'])
# collect ratings and assign a decreasing value to them
ratings = [[letter*3, letter*2, letter, letter+'+'] for letter in string.ascii_uppercase] # create all possible ratings in order
ratings = list(itertools.chain.from_iterable(ratings)) # flatten list
ratings_code = dict(zip(ratings, reversed(range(len(ratings)))))
# map rating code to original rating
df['RatingCode'] = df.Ratings.map(ratings_code)
根據您對RatingCode
范圍的RatingCode
,您需要調整reversed(range(len(ratings)))
或限制列表理解中使用的字母。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.