我正在使用ICD-9代码使用python进行数据挖掘项目,我无法将特定代码转换为类别。例如,我试图将001和139之间的所有内容更改为0,将所有内容更改为140和239之间的1,等等
这就是我的尝试:
{{1}}
答案 0 :(得分:0)
您可以使用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
或类似的
答案 1 :(得分:0)
if语句没有错。
newvalue = 1 if oldvalues <= 139 else 2
将此函数应用为带有map
的lambda表达式。