2017-08-24 13 views
0

私はPythonとpandasを使って遊んでいます。別の列の条件に基づいて新しい列を設定する

私はデータフレームを作成して、私は「郡」と呼ばれる柱(軸1)を持っているが、私は(少なくとも私は思う)「領域」と呼ばれる列を作成し、このようにそれを移入する必要があります。

If County column == 'Suffolk' or 'Norfolk' or 'Essex' then in Region column insert 'East Anglia' 

If County column == 'Kent' or 'East Sussex' or 'West Sussex' then in Region Column insert 'South East' 

If County column == 'Dorset' or 'Devon' or 'Cornwall' then in Region Column insert 'South West' 

のように...

は、これまでのところ、私はこの持っている:

myDataFrame['Region'] = np.where(myDataFrame['County']=='Suffolk', 'East Anglia', '') 

をしかし、私は、これは他の郡では動作しません疑う

確かに私は初心者です。私はグーグルと読書を試みましたが、ここで私はこれまでに何があったのか分かりませんでした。

答えて

1

あなたがdf.isinlocベースのインデックスを間違いなく必要があります

df['Region'] = np.nan 
df.loc[df.County.isin(['Suffolk','Norfolk', 'Essex']), 'Region'] = 'East Anglia' 
df.loc[df.County.isin(['Kent', 'East Sussex', 'West Sussex']), 'Region'] = 'South East' 
df.loc[df.County.isin(['Dorset', 'Devon', 'Cornwall']), 'Region'] = 'South West' 

あなたはまた種類のマッピングを作成し、df.mapまたはdf.replaceを使用することができます。

mapping = { 'Suffolk' : 'East Anglia', 'Norfolk': 'East Anglia', ... 'Kent' :'South East', ..., ... } 
df['Region'] = df.County.map(mapping) 

私は好みます不一致がNaNに変換されるため、ここでマップします。これは理想的なことです。

+0

すぐに回答いただきありがとうございます。本当にありがとうございます。私はGoogleに "loc"とは何か、私は未来のために学ぶだろう。 – Dee1983

+0

@ Dee1983 2番目のソリューションも追加されました。 'loc'に基づく索引付けは' df.loc'を使った安全なスライス索引付けです。 –

+0

またはおそらく 'replace'〜 – Wen

関連する問題