我有一个 pandas 数据框,其中有一列,该列是一个有时包含国家/地区的字符串。
我有一个包含所有可能的国家/地区名称的数组。
我想在数据框中返回一个新列,其中包含国家/地区名称(如果包含在第一列中),否则返回 null 值。
我期望的数据框:
country = ['Angola', 'Belgium']
df = pd.DataFrame(np.array([['A product for Angola', 'Angola'], ['A product for Belgium', 'Belgium']]), columns=['Product', 'Country'])
最佳答案
使用Series.str.extract
使用正则表达式 - 通过 |
连接所有值,用于正则表达式 OR
:
country = ['Angola', "Korea (Democratic People's Republic of)"]
df = pd.DataFrame(np.array([['A product for Angola', 'Angola'],
["A product for Korea (Democratic People's Republic of)",
"Korea (Democratic People's Republic of)"],
['A product for new', None]]), columns=['Product', 'Country'])
import re
pat = '|'.join(re.escape(x) for x in country)
df['newCountry'] = df['Product'].str.extract('('+ pat + ')', expand=False)
print (df)
Product \
0 A product for Angola
1 A product for Korea (Democratic People's Repub...
2 A product for new
Country \
0 Angola
1 Korea (Democratic People's Republic of)
2 None
newCountry
0 Angola
1 Korea (Democratic People's Republic of)
2 NaN
关于python - 数据框列是一个包含国家/地区的字符串,我想创建一个包含该国家/地区的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54765135/