繁体   English   中英

替代基于条件创建新的 pandas 系列?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM