通过添加其他if语句列来修改数据框

时间:2019-06-26 05:15:56

标签: pandas if-statement

通过使用if语句添加附加列来修改数据框。 我创建了5个列表,分别是:东亚,中亚,中美洲,南美洲,欧洲_东部和欧洲_西部。我想基于现有列添加条件列。即如果Japan在Central_East中,则添加列中的Japan行应包含Central East,依此类推。

df['native_region'] =df["native_country"].apply(lambda x: "Asia-East" if x in 'Asia_East' 
                                               "Central-Asia" elif x in "Central_Asia"
                                                "South-America" elif x in "South_America"
                                                "Europe-West" elif x in "Europe_West"
                                                "Europe-East" elif x in "Europe_East"
                                                "United-States" elif x in " 
United-States" 
else "Outlying-US"
                                                 )

文件“”,第2行     “ Central_Asia”中的“ Central-Asia” elif x                       ^ SyntaxError:语法无效

1 个答案:

答案 0 :(得分:0)

我可能是错的,但我认为您正在以错误的方式解决问题。

您似乎在这里所做的只是将'_'替换为'-',您可以使用以下代码行: df['native_region'] = df.native_country.str.replace('_', '-')

然后,以我的经验,像这样工作更容易理解:

known_countries = ['Asia-East', 'Central-Asia', 'South-America', ...]
is_known = df['native_country'].isin(known_countries )
df.native_region[~known_countries] = 'Outlying-US'

如果您与以下国家一起工作,这也可能会起作用:

east_asia_countries = ['Japan', 'China', 'Korea']
isin_east_asia = df['native_country'].isin(east_asia_countries)
df.native_region[known_countries] = 'East-Asia'