2014-02-18 69 views
1

我試圖過濾出一個大的數據框,並且不希望在'產品描述'列中包含某些值的行。刪除包含列表中的值的行

我已經看過 how can i remove multiple rows with different labels in one command in pandas?

Remove rows not .isin('X')

和應用代碼。然而,

df[-df['label'].isin(List)] 

不適合我,我不知道該怎麼辦。

這裏是我的確切代碼:

List2 = ['set up','setup','and install',....etc etc] 

(我也試過列表2 =(..等)用括號代替括號和沒有工作)

Computers_No_UNSPSC =Compters_No_UNSPSC[- Computers_No_UNSPSC['Product Description'].isin(List2)] 

(我也嘗試使用〜而不是 - 這是行不通的)

有沒有什麼,我做錯了/失蹤。當我查看我的Computers_No_UNSPSC數據框時,發現在我創建的列表中仍有包含單詞的行。它似乎並沒有濾除我不想要的東西。

感謝您的幫助!

**我相信List2正在工作。我有很多數據可以用來描述他們的電腦購買情況。我希望所有購買的電腦不是'電腦維修'或'電腦軟件'。 所以我創建了一個似乎捕捉外設/事情我不想列表...好,當我說

print List2 

我得到

['set up', 'setup', 'and install', ' server', 'labor', 'services', 'processing', 'license', 'renewal', 'repair', 'case', 'speakers', 'cord', 'support', 'cart', 'docking station', 'components', 'accessories', 'software', ' membership', ' headsets ', ' keyboard', ' mouse', ' peripheral', ' part', ' charger', ' battery', ' drive', ' print', ' cable', ' supp', ' usb', ' shelf', 'disk', 'memory', 'studio', 'training', 'adapter', 'wiring', 'mirror'] 

這是否意味着它承認每個字符串一個字?所以當我應用過濾器時,它會過濾我的List2中的每個單詞?

A =A[-A['Product Description'].isin(List2)] 

這似乎是不工作的部分,但再次,我不知道我錯了哪裏。

+0

您可以發佈樣本數據,其中這並不工作和列表它無法匹配 – EdChum

+0

什麼部分完全不起作用?你提到了兩個部分: - 和'.isin(List2)'所以這兩個部分不工作或只是一個? – KodyVanRy

回答

1

我不認爲你明白它是如何工作的檢查,如果標籤==任何在該列表......如果沒有標籤包含在該列表中的任何...

這聽起來像一個標籤可能看起來像

label = "set up computer" 

ISIN將查找精確匹配...不是部分匹配

label in ["set","up","computer"] #is false for example 
"set" in ["set","up","computer"] #is true for example 

:這顯然不是大熊貓isin但是工作原理是一樣的...

做你想做什麼,你需要檢查對標籤的單詞列表

any(word in label for word in blacklisted_words) 

這將是慢得多

+1

感謝您的解釋。我不明白到底發生了什麼事。我確實試圖做... C2 = C2 [(-C2 ['Product Description']。str.contains('set up'))| (-C2 ['Product Description']。str.contains('setup'))...等等,但這並沒有工作,我相信它出於同樣的原因 – Alexis

+0

是啊:)我認爲你現在開始明白:)繼續並接受,如果這回答你的問題(即使它不能解決你的問題)。 –

+0

有沒有更簡單的矢量化的方式來做到這一點與熊貓?我是否必須使用for循環來過濾掉所有包含這些單詞的內容? – Alexis

相關問題