我有一列字符串和数字。因此,数据类型是对象。我想提取所有整数/浮点数。我想将整数范围归类到某个特定的类。因此,我想用其类名替换数字。我尝试了以下方法:
diabetes_data[diabetes_data['diag_1'].apply(lambda x: str(x).isdigit())]['diag_1']).replace(['[1-100)'],'Circulatory', inplace = True)
我正在尝试使用循环名称替换1-100范围内的数字。
解决方案1很好而且很短,请使用.mask()检查值是否在其中range(1, 100)
,如果是则替换它:
diabetes_data = pd.DataFrame(data={'diag_1': ['a', 'b', 1, 2, 101]})
diabetes_data['diag_1'] = diabetes_data['diag_1'].mask(
diabetes_data['diag_1'].isin(range(1, 100)),
'Circulatory',
)
解决方案2:您也可以将.str.replace()与某些正则表达式配合使用来解决此问题:
diabetes_data['diag_1'] = (diabetes_data['diag_1']
.astype(str)
.str.replace('^[1-9]{1,2}$|^100$', 'Circulatory'))
解决方案3:使用np.isreal()找出哪些行是数字,然后使用np.where()更改这些行:
mask = diabetes_data['diag_1'].map(np.isreal)
diabetes_data['diag_1'].loc[mask] = np.where(
(diabetes_data['diag_1'].loc[mask] >= 1)
& (diabetes_data['diag_1'].loc[mask] <= 100),
'Circulatory',
diabetes_data['diag_1'].loc[mask]
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句