我有一个带有“说明”列的数据框(df)。我想通过从列表(mylist)中识别部分匹配项来从此数据框中提取所有这些行。
df
------------------
id description
111 abcxyz
212 ab10yz
203 abcdd9
442 ab00-z
554 a12x0z
697 a9901z
mylist: ['ab','yz']
有类似的问题,但主要集中在将列表项与数据框列完全匹配。
我有兴趣将mylist中的项目与数据框的描述列进行匹配,并将这些行作为找到匹配项的数据框返回。
作为数据框的预期结果:
------------------
id description
111 abcxyz
212 ab10yz
203 abcdd9
442 ab00-z
我尝试了不同的解决方案。在这里,我将提到其中的两个,如下:
df[df.description.str.contains('|'.join(mylist))]
df[df['description'].str.contains(mylist)]
上面的第一行导致:
KeyError: '[nan nan nan ... nan nan nan] not in index'
第二行代码将导致:
TypeError: unhashable type: 'list'
答案 0 :(得分:0)
您可以使用正则表达式,“ DataFrame.str.contains”已经可以做到:
pt = '.*?({}).*?'.format('|'.join(mlist))
df[df['description'].str.contains(pt, regex= True)]