我有一个一栏列表,展示了一些公司名称。其中一些名称包含国家/地区名称(例如,“中国 A1”中的“中国”,“芬兰的 C1”中的“芬兰”)。我想根据公司名称和由国家/地区名称组成的预定义列表提取其所属国家/地区。
原始数据框df像这样显示
Company name Country
0 China A1
1 Australia-A2
2 Belgium_C1
3 C1 in Finland
4 D1 of Greece
5 E2 for Pakistan
目前我只能想出一个低效的方法。这是我的代码:
country_list = ['China','America','Greece','Pakistan','Finland','Belgium','Japan','British','Australia']
for t in country_list:
df.loc[df['company name'].contains(t),'country']=t
结果显示像
Company name Country
0 China A1 China
1 Australia-A2 Australia
2 Belgium_C1 Belgium
3 C1 in Finland Finland
4 D1 of Greece Greece
5 E2 for Pakistan Pakistan
我认为当country_list包含大量元素(即国家)时,通过循环方法会很耗时。有没有更简单的方法来解决我的问题?
这是一种使用方法str.extract https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.extract.html:
df['Country'] = df['Company name'].str.extract('('+'|'.join(country_list)+')')
Company name Country
0 China A1 China
1 Australia-A2 Australia
2 Belgium_C1 Belgium
3 C1 in Finland Finland
4 D1 of Greece Greece
5 E2 for Pakistan Pakistan
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)