如何从文本中提取某些字符串?

时间:2019-07-31 09:38:47

标签: python pandas

我要从中提取国家/地区的某个位置信息。

该功能如下:

data['Location'].head()

0    stockton, california, usa
1    edmonton, alberta, canada
2     timmins, ontario, canada
3      ottawa, ontario, canada
4                n/a, n/a, n/a
Name: Location, dtype: object

我想要:

data['Country'].head(3)

0   usa
1   canada
2   canada

我尝试过:

data['Country'] = data.Location.str.extract('(+[a-zA-Z])', expand=False)
data[['Location', 'Country']].sample(10)

返回:

  

错误:位置1不再重复

当我尝试放置'[a-zA-Z] +'时,它给了我城市。

我们将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:2)

您还可以使用正则表达式模式:

df['Country'] = df['Location'].str.split('(,\s)(\w+)$', n = 1, expand = True)[2]

输出:

df['Country'].head(3)
Out[111]: 
0       usa
1    canada
2    canada
Name: country, dtype: object

答案 1 :(得分:1)

data['Country'] = data['Location'].apply(lambda row: str(row).split(',')[-1])

您可以执行此操作,df.apply在所有行上应用一个函数,我们的lambda函数提取国家,然后仅在一个列上调用apply并将其保存到另一列