2017-12-28 13 views
-1

私はデータフレームを持っているの数値に変更し、dfを言う、:今すぐコールナン値とパイソン

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の場合は常に0になります。これは、それがどうあるべきかである。

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 

すなわち、property_type1NaNであるライン11に、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 

マスクを1回だけ計算し、それを複数回インデックスに使用します。これは、2回計算するより効率的です。

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.マスクを2回計算しないでください。非効率です。 –

+0

また、私はdownvoteをしませんでした。 –

+0

問題はありません@cᴏʟᴅsᴘᴇᴇᴅ、あなたは正しいです。私は 'ix'で最新ではないので、マスクをダブルタイピングするのは私の間違いです。 – FatihAkici