我要从中提取国家/地区的某个位置信息。
该功能如下:
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] +'时,它给了我城市。
我们将不胜感激。谢谢。
答案 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并将其保存到另一列