python - 数据框列是一个包含国家/地区的字符串,我想创建一个包含该国家/地区的新列

标签 python string pandas

我有一个 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/

相关文章:

python - Pandas - numpy.where 问题

python - 来自 python 模块的可公开访问的函数

php - 根据计数用php生成数字字符串

java - 找到给定字符串的每个可能的子集

c - 在 C 中删除 URL 中的单点路径名

python - 在 pandas/python 中创建多个子数据框

python - 相关矩阵不显示所有列python

python - 从字节文件中打开 PIL 图像

python - Pyspark:将不同表中的列相乘

python - Eventlet 线程不并行运行