[英]Replace everything that starts with number python
我正在為使用python的數據挖掘項目使用ICD-9代碼,但無法將特定代碼轉換為類別。 例如,我試圖用0更改介於001和139之間的所有內容,使用1更改介於140和239之間的所有內容,等等
這是我嘗試過的:
df = df.replace({'diag_1' : {'(1-139)' : 0, '(140-239)' : 1}})
您可以使用pd.cut
實現此目的:
In [175]:
df = pd.DataFrame({'value':np.random.randint(0,20,10)})
df
Out[175]:
value
0 12
1 2
2 10
3 5
4 19
5 2
6 8
7 14
8 12
9 16
在這里我們將bin間隔設置為(0-5)(5-15),(15-20):
In [183]:
df['new_value'] = pd.cut(df['value'], bins=[0,5,15,20], labels=[0,1,2])
df
Out[183]:
value new_value
0 12 1
1 2 0
2 10 1
3 5 0
4 19 2
5 2 0
6 8 1
7 14 1
8 12 1
9 16 2
我認為在您的情況下,以下方法應該起作用:
df['diag_1']= pd.cut(df['diag_1'], [1,140,240] , labels=[1,2,3])
您可以使用np.arange
或類似設置動態設置垃圾箱和標簽
如果語句沒有錯。
newvalue = 1 if oldvalues <= 139 else 2
將此功能與map
一起用作lambda表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.