簡體   English   中英

檢查列表中的單詞並刪除pandas dataframe列中的單詞

[英]Check for words from list and remove those words in pandas dataframe column

我有一個如下列表,

remove_words = ['abc', 'deff', 'pls']

以下是我使用列名'string'的數據框

     data['string']

0    abc stack overflow
1    abc123
2    deff comedy
3    definitely
4    pls lkjh
5    pls1234

我想檢查pandas dataframe列中remove_words列表中的單詞,並刪除pandas數據幀中的這些單詞。 我想檢查單獨出現的單詞,而不是用其他單詞出現。

例如,如果pandas df列中有'abc',請將其替換為''但如果它與abc123一起出現,我們需要保持原樣。 這里的輸出應該是,

     data['string']

0    stack overflow
1    abc123
2    comedy
3    definitely
4    lkjh
5    pls1234

在我的實際數據中,我在remove_words列表中有2000個單詞,在pandas數據框中有50億個記錄。 所以我正在尋找最有效的方法來做到這一點。

我在python中嘗試過很少的東西,沒有太大的成功。 有人可以幫我這么做嗎? 任何想法都會有所幫助。

謝謝

嘗試這個:

In [98]: pat = r'\b(?:{})\b'.format('|'.join(remove_words))

In [99]: pat
Out[99]: '\\b(?:abc|def|pls)\\b'

In [100]: df['new'] = df['string'].str.replace(pat, '')

In [101]: df
Out[101]:
               string              new
0  abc stack overflow   stack overflow
1              abc123           abc123
2          def comedy           comedy
3          definitely       definitely
4            pls lkjh             lkjh
5             pls1234          pls1234

完全采用@ MaxU的模式!

我們可以通過將regex參數設置為True並傳遞字典字典來指定模式以及每列要替換的內容,從而使用pd.DataFrame.replace

pat = '|'.join([r'\b{}\b'.format(w) for w in remove_words])

df.assign(new=df.replace(dict(string={pat: ''}), regex=True))

               string              new
0  abc stack overflow   stack overflow
1              abc123           abc123
2          def comedy           comedy
3          definitely       definitely
4            pls lkjh             lkjh
5             pls1234          pls1234

暫無
暫無

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

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