我用这些列在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)]
答案 0 :(得分:1)
尝试通过使用正则表达式或字符|
加入公司列表来创建正则表达式模式,然后使用series.str.contains
作为布尔掩码:
companies = ['x', 'y', 'z']
pat = '|'.join(companies)
df[df['companies'].str.contains(pat)]