python select子集,其中df列值包含数组中的值之一

时间:2018-10-07 11:38:20

标签: python-3.x pandas

我用这些列在python中创建了一个简单的数据框

Columns: [index, bulletintype, category, companyname, date, url] 

我与公司有一个简单的联系

companies= [x,y,x]

如果列'companyname'与companys数组中的一个或多个名称匹配,我想创建数据框的子集。

subset = df[df['companyname'].isin(companies)]

这很好用,但是.isin完全匹配,我的来源没有使用相同的名称。因此,我正在寻找一个替代角度,并希望使用部分名称进行比较。我对。str.contains('part of the name')很熟悉,但是无法将此功能与数组结合使用。有人可以帮助我实现这样的目标(但使用有效的代码:-)

subset = df[df['companyname'].contains(companies)]

1 个答案:

答案 0 :(得分:1)

尝试通过使用正则表达式或字符|加入公司列表来创建正则表达式模式,然后使用series.str.contains作为布尔掩码:

companies = ['x', 'y', 'z']
pat = '|'.join(companies)
df[df['companies'].str.contains(pat)]
相关问题