2017-12-20 1 views
1

현재 재생할 가짜 데이터 집합을 작성 중입니다. 나는 환자의 정보를 가지고 하나 개의 데이터 세트라는 patient_data 있습니다데이터 프레임 python에 새로운 영구적 인 열 추가

patient_data = pd.DataFrame(np.random.randn(100,5),columns='id name dob sex state'.split()) 

이 이름, 생일 등의 변수 나에게 100 개 관찰의 샘플을 제공, 등

분명히, 이름과 같은 이들 중 일부 (성 및 국가)는 범주 형 변수이며 임의의 숫자가 첨부되어있는 것은 의미가 없습니다.

"성별"열에 대해서는 모든 임의 번호 <을 0으로 설정하고 "여성"을 읽는 기능을 만들었습니다. 나는 "성"이라는 새로운 변수를 생성하고이 변수 안에이를 저장하는 데 싶습니다. "성"나는 공식적으로 새 변수를 생성하는 데이터 프레임에이 기능을 적용 할 코드를 작성 후

def malefemale(x): 
if x < 0: 
    print('male') 
else: 
    print('female') 

그리고

patient_data.assign(gender = patient_data['sex'].apply(malefemale)) 

그러나 "patient_data"를 목성 노트에 입력하면이 새로운 변수를 포함하도록 데이터 프레임이 업데이트되지 않습니다. 아무것도 한 것처럼 보이지 않았다.

제대로 작동하는 함수로이 새로운 성별 변수를 patient_data 데이터 프레임에 영구적으로 추가 할 수있는 사람이 누구인지 알고 있습니까?

답변

1

나는 다시 지정할 필요가 있다고 생각과 새로운 값이 numpy.where 사용을 위해 :

patient_data = patient_data.assign(gender=np.where(patient_data['sex']<0, 'male', 'female')) 
print(patient_data.head(10)) 

     id  name  dob  sex  state gender 
0 0.588686 1.333191 2.559850 0.034903 0.232650 female 
1 1.606597 0.168722 0.275342 -0.630618 -1.394375 male 
2 0.912688 -1.273570 1.140656 -0.788166 0.265234 male 
3 -0.372272 1.174600 0.300846 1.959095 -1.083678 female 
4 0.413863 0.047342 0.279944 1.595921 0.585318 female 
5 -1.147525 0.533511 -0.415619 -0.473355 1.045857 male 
6 -0.602340 -0.379730 0.032407 0.946186 0.581590 female 
7 -0.234415 -0.272176 -1.160130 -0.759835 -0.654381 male 
8 -0.149291 1.986763 -0.675469 -0.295829 -2.052398 male 
9 0.600571 -1.577449 -0.906590 1.042335 -2.104928 female 
0

을 당신은 사용자 정의 기능을 변경해야

def malefemale(x): 
    if x < 0: 
    return "Male" 
    else: 
    return "female" 

단순히 적용되는 사용자 정의 기능

patient_data['gender'] = patient_data['sex'].apply(malefemale)