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