我正在玩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的地方,这让我走得很远。
答案 0 :(得分:1)
您肯定需要基于df.isin
和loc
的索引编制:
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
,这将是理想的选择。