2017-08-24 91 views
0

我正在玩Python和熊貓。根據另一列的條件填充新列

我已經創建了一個數據幀,我有一個叫做「縣」列(軸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', '') 

但我懷疑這會不會對任何其他縣工作

由於我確定很明顯,我是一名初學者。我試着用Google和閱讀,但只能找到關於numpy的地方,這讓我感到非常興奮。

回答

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.mapdf.replace

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

我寧願在這裏映射,因爲它會將不匹配轉換爲NaN,這將是理想的事情。

+0

謝謝你回答這麼快,我真的很感激。我會谷歌什麼「祿」是我爲未來學習。 – Dee1983

+0

@ Dee1983也增加了第二個解決方案。基於loc的索引是使用'df.loc'的安全分片索引。 –

+0

或者'replace'〜 – Wen

相關問題