首页 > 解决方案 > pandas 仅保留列表中的单词和短语的功能

问题描述

我有一个这样的df...

cars = {'Brand': ['Honda Civic 1998','2001 Toyota Corolla','99 Ford','2011 Audi']}
df = pd.DataFrame(cars, columns = ['Brand'])

和这样的清单..

mylist = ['Honda Civic','Ford','Audi']

我正在尝试仅将列表中的元素提取到一个新列中...

df['words from list'] = df['Brand'].apply(lambda x: ' '.join([i for i in x.split() if i in (mylist)]))

我正进入(状态..

Brand                  words from list
Honda Civic 1998    
2001 Toyota Corolla 
99 Ford                Ford
2011 Audi              Audi

如何在不进一步解析列表的情况下获取提取以包含列表中的元素和空格?为什么列表中的空格无法识别?

预期结果是……

Brand                  words from list
Honda Civic 1998       Honda Civic
2001 Toyota Corolla 
99 Ford                Ford
2011 Audi              Audi

标签: pythonpandasnumpy

解决方案


pandas series.str.extract 应该这样做:

df['words_from_list'] = df['Brand'].str.extract('('+'|'.join(mylist)+')',expand=False)

print(df)

                 Brand words_from_list
0     Honda Civic 1998     Honda Civic
1  2001 Toyota Corolla             NaN
2              99 Ford            Ford
3            2011 Audi            Audi

推荐阅读