2017-12-28 20 views
-1

나는 DataFrame이의 숫자로 변경, df 말 : 지금전화 NaN의 가치와 파이썬

id   property_type1 property_type pro 
1    Condominium    2 2 
2      Farm    14 14 
3      House    7 7 
4     Lots/Land    15 15 
5 Mobile/Manufactured Home    13 13 
6    Multi-Family    8 8 
7     Townhouse    11 11 
8    Single Family    10 10 
9     Apt/Condo    1 1 
10      Home    7 7 
11      NaN    29 NaN 

, 나는 property_type 열 같은 값을 가지도록 pro 열 필요 property_type1 열의 값이 NaN 일 때마다

property_type1NaN 인 라인 (11)에서,
id   property_type1 property_type pro 
1    Condominium    2 2 
2      Farm    14 14 
3      House    7 7 
4     Lots/Land    15 15 
5 Mobile/Manufactured Home    13 13 
6    Multi-Family    8 8 
7     Townhouse    11 11 
8    Single Family    10 10 
9     Apt/Condo    1 1 
10      Home    7 7 
11      NaN    29 29 

에서, pro 열의 값 property_type 값 인 29이된다 :이 어떻게해야한다. 어떻게해야합니까?

답변

0

ix은 더 이상 사용되지 않습니다.

옵션 1
내가 np.where 함께 할 것 -

df = df.assign(pro=np.where(df.pro.isnull(), df.property_type, df.pro)) 
df 
    id   property_type1 property_type pro 
0 1    Condominium    2 2.0 
1 2      Farm    14 14.0 
2 3      House    7 7.0 
3 4     Lots/Land    15 15.0 
4 5 Mobile/Manufactured Home    13 13.0 
5 6    Multi-Family    8 8.0 
6 7     Townhouse    11 11.0 
7 8    Single Family    10 10.0 
8 9     Apt/Condo    1 1.0 
9 10      Home    7 7.0 
10 11      NaN    29 29.0 

옵션 2
당신이 현재 위치에서 임무를 수행 할 경우, 사용 loc -

m = df.pro.isnull() 
df.loc[m, 'pro'] = df.loc[m, 'property_type'] 
df 

    id   property_type1 property_type pro 
0 1    Condominium    2 2.0 
1 2      Farm    14 14.0 
2 3      House    7 7.0 
3 4     Lots/Land    15 15.0 
4 5 Mobile/Manufactured Home    13 13.0 
5 6    Multi-Family    8 8.0 
6 7     Townhouse    11 11.0 
7 8    Single Family    10 10.0 
8 9     Apt/Condo    1 1.0 
9 10      Home    7 7.0 
10 11      NaN    29 29.0 

마스크를 한 번만 계산하고 인덱스를 여러 번 사용하여 두 번 계산하는 것보다 효율적이어야합니다.

0

property_type1 열이 NaN 인 행을 찾고 해당 행의 경우 property_type 값을 pro 열에 지정하십시오.

df.ix[df.property_type1.isnull(), 'pro'] = df.ix[df.property_type1.isnull(), 'property_type'] 
+1

1.'ix'는 사용하지 마십시오. 더 이상 사용되지 않습니다. 2. 마스크를 두 번 계산하지 마십시오. 비효율적입니다. –

+0

또한, 나는 downvote하지 않았다 ... –

+0

문제는 @ cᴏʟᴅsᴘᴇᴇᴅ, 네가 맞다. 나는'ix'로 최신이 아니며, 마스크를 두 번 타이핑하는 것은 저의 실수입니다. – FatihAkici