문자열과 숫자 열이 있습니다. 따라서 데이터 유형은 객체입니다. 모든 정수 / 부동 수를 추출하고 싶습니다. 정수 범위를 특정 클래스로 분류하고 싶습니다. 따라서 번호를 클래스 이름으로 바꾸고 싶습니다. 다음을 시도했습니다.
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] 삭제
몇 마디 만하겠습니다