根据另一列中的条件填充新列

时间:2017-08-24 19:27:41

标签: python pandas if-statement dataframe

我正在玩Python和熊猫。

我创建了一个数据框,我有一个名为' County'的列(轴1)。但我需要创建一个名为' Region'并像这样填充它(至少我认为):

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', '')

但我怀疑这对任何其他县都不起作用

我确信很明显我是初学者。我试过谷歌搜索和阅读,但只能找到关于numpy的地方,这让我走得很远。

1 个答案:

答案 0 :(得分: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,这将是理想的选择。