我有一个新闻标题的数据框,如下所示:
df = pd.DataFrame({'texto': ['El Hubble registró imágenes de una "mariposa interestelar"',
'Con su Audi atropelló y mató a una pareja: lo juzgan y podrían darle 25 años',
'Clarín cumplió 70 años y lo celebró con su personal',
'A diez años de Katrina, Obama visitó Nueva Orleans y celebró la recuperación',
'La oposición volvió a juntarse y pidió la boleta única electrónica en octubre',
'Hallan a casi 50 “sin papeles” muertos en un camión en Austria'],
'id': [1,2,3,4,5,6]})
df['texto'] = df['texto'].str.lower()
searchwords = ['hubble','audi','obama','clarín','austria']
我试着搜索一些关键字中的每一个是否出现在上面的数据框中,然后创建一个新的。我试过'startswith'
,但是只包含关键字在前面的句子。
Code:
df = df[df['texto'].str.startswith(tuple(searchwords))]
Output:
clarín cumplió 70 años y lo celebró con su per... 3
你知道一种方法来创建一个Pandas线或一个函数来创建一个过滤器像这样?
谢谢!
2条答案
按热度按时间bxgwgixi1#
这样做的另一个选项(没有矢量化,因此效率较低)是:
以及
预期结果:[![在此输入图像说明][1]][1]
你可以控制函数,并进行相应的调整,但你一行一行地移动,速度相对较慢。
yptwkmov2#
用途
说明:
'|'.join(searchwords)
生成一个字符串,其中搜索词由|(OR运算符)符号。df['texto'].str
以字符串形式提供列的每个元素,然后检查它是否包含任何搜索词(因此使用OR运算符)。这会产生一系列True / False值。然后使用布尔序列从DataFrame df中选择满足True
条件的行,这些行形成新的DataFrame df 2。