簡體   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