[英]Alternative to creating a new pandas series based on conditionals?
我有一个df,它有一个带有国家代码的“Country”列,例如德国的“DE”,墨西哥的“MX”等。我在下面创建了一个function并使用。申请创建一个新的列“Region”。 我想知道 go 是否有更巧妙/更有效的方法来实现这一点,例如使用 np.where? 仍在尝试了解 np.where 的语法,下面的解决方案目前有效,只是试图扩大我对使用 Pandas 实现此目的的其他方法的了解:)
def region(df):
if df.Country == 'US':
return "NA"
elif df.Country == 'DE' or df.Country == 'ES' or df.Country == 'FR' or df.Country == 'GB' or df.Country == 'IT':
return "EMEA"
elif df.Country == 'IN':
return "APAC"
elif df.Country == 'BR' or df.Country == 'MX':
return "LATAM"
df.insert(2, 'Region', df.apply(region, axis=1))
实现此目的的一种方法是将字典与pandas.Series.map
function 一起使用:
#Create a one-time dictionary with mapping of country against region
d = {'US':'NA','DE':'EMEA','ES':'EMEA','FR':'EMEA','GB':'EMEA','IT':'EMEA','IN':'APAC','BR':'LATAM','MX':'LATAM'}
#And use map function to create a new column
df['Region'] = df['Country'].map(d)
print(df)
Country Region
0 US NA
1 DE EMEA
2 ES EMEA
3 FR EMEA
4 GB EMEA
5 IT EMEA
6 IN APAC
7 BR LATAM
8 MX LATAM
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.