[英]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.