我正在使用使用python的数据挖掘项目的ICD-9代码,而且我在将特定代码转换为类别时遇到了困难。例如,我试图用0更改001到139之间的所有内容,用1更改140到239之间的所有内容,等等。
这就是我尝试过的:
df = df.replace({'diag_1' : {'(1-139)' : 0, '(140-239)' : 1}})发布于 2016-12-01 16:43:46
您可以使用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在这里,我们设置了(0-5) (5-15),(15-20)的bin间隔:
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或类似的方法动态设置回收箱和标签。
发布于 2016-12-01 22:00:47
如果声明没有什么问题。
newvalue = 1 if oldvalues <= 139 else 2使用map将此函数作为lambda表达式应用。
https://stackoverflow.com/questions/40915828
复制相似问题