Python 在匹配的单词之前提取单词

Python 在匹配的单词之前提取单词,python,pandas,Python,Pandas,您好,我正在尝试在Python中提取匹配单词之前的单词 例如: import pandas as pd import re data = [' 123 DIR FOOD CITY','124 DIR DRINK CITY','143 STREET CANDY CITY','186 ROAD APPLE CITY'] df = pd.DataFrame(data, columns = ['ADDR']) 我试图提取单词“食物”、“饮料”、“糖果”和“苹果”。 我期望的输出是: ADDR

您好,我正在尝试在Python中提取匹配单词之前的单词

例如:

import pandas as pd
import re
data = [' 123 DIR FOOD CITY','124 DIR DRINK CITY','143 STREET CANDY CITY','186 ROAD APPLE CITY']
df = pd.DataFrame(data, columns = ['ADDR'])
我试图提取单词“食物”、“饮料”、“糖果”和“苹果”。 我期望的输出是:

ADDR                        CITY
123 DIR FOOD CITY           FOOD
124 DIR DRINK CITY          DRINK
143 STREET CANDY CITY       CANDY
186 ROAD APPLE CITY         APPLE
这是我尝试过的,但没有任何效果

df['CITY'] = df['ADDR'].apply(lambda x: ' '.join(re.findall(r'(\w+)\s+CITY',x)))
我不太擅长使用正则表达式,我的代码怎么了


非常感谢你的帮助

使用
extract
和正则表达式:

df['CITY'] = df['ADDR'].str.extract('.*\s(?P<CITY>.*)\sCITY')
使用n=2的rsplit的另一种方法

df['CITY'] = df['ADDR'].str.rsplit(' ', n=2).str[1]

你能解释一下匹配的条件吗?它到底是什么意思?我运行了它,它是期望的输出。你试过打印df吗?@asafpr我得到的是,所有的行都是“食物、饮料、糖果、苹果”@AMC它在“城市”之前有一个词。结果是所有行的“食物、饮料、糖果、苹果”,而不是什么都没有,对不起。它在“城市”之前有一个词,它总是第三个词,还是总是倒数第二个词?结果是所有行的“食物、饮料、糖果、苹果”,而不是什么都没有,对不起。这意味着它在工作,不是吗?
df['CITY'] = df['ADDR'].str.rsplit(' ', n=2).str[1]