簡體   English   中英

python - pandas:使用關鍵字列表創建一個新的 dataframe

[英]python - pandas: creating a new dataframe with a list of keywords

我有一個 dataframe 的新聞標題,如下所示:

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']

我正在嘗試搜索所選關鍵字中的每一個是否都出現在上面 dataframe 中以創建一個新關鍵字。 我試過'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 行或 function 來創建這樣的過濾器的方法嗎?

謝謝!

利用

df2 = df[df['texto'].str.contains('|'.join(searchwords))]

解釋:

'|'.join(searchwords)生成一個字符串,搜索詞由 | 分隔 (或運算符)符號。 df['texto'].str將列的每個元素作為字符串提供,然后檢查它是否包含任何搜索詞(因此是 OR 運算符)。 這會產生一系列 True / False 值。 boolean 系列然后用於 select DataFrame df 中滿足True條件的行,這些形成新的 DataFrame df2。

這樣做的另一種選擇(沒有矢量化因此效率較低)是:

def serach_term(texto, terms):
    if any([t in texto for t in terms]):
        return True
    return False

df['exists'] = df.apply(lambda x: serach_term(x['texto'],searchwords), axis=1)

期望的結果:[![在此處輸入圖片描述][1]][1]

您獲得了 function 的控制權並可以相應地進行調整,但是您逐行移動並且速度相對較慢。

    texto                                              id   exists
0   el hubble registró imágenes de una "mariposa i...   1   True
1   con su audi atropelló y mató a una pareja: lo ...   2   True
2   clarín cumplió 70 años y lo celebró con su per...   3   True
3   a diez años de katrina, obama visitó nueva orl...   4   True
4   la oposición volvió a juntarse y pidió la bole...   5   False
5   hallan a casi 50 “sin papeles” muertos en un c...   6   True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM