2017-04-07 145 views
1

我有一個數據框客戶與一些「壞」行,該數據框中的關鍵是CustomerID。我知道我應該放棄這些行。我有一個名爲badcu的列表,表示[23770, 24572, 28773, ...]每個值對應一個不同的「壞」客戶。熊貓:如何根據列表從數據框中刪除行?

然後,我有另據幀,讓叫它銷售,所以我想放棄的壞客戶的所有記錄,那些在badcu名單。

如果我做了以下

sales[sales.CustomerID.isin(badcu)] 

我得到確切地說我想刪除記錄的數據幀,但如果我做了

sales.drop(sales.CustomerID.isin(badcu)) 

它返回的第一行數據幀丟棄(這是一個合法的順序),其餘的行保持不變(它不會刪除錯誤的行),我想我知道爲什麼會發生這種情況,但我仍然不知道如何刪除不正確的客戶ID行。

+0

你應該按指標下降 – Eliethesaiyan

+1

使用銷售[〜sales.CustomerID.isin(badcu)] – Vaishali

+1

Duh!很簡單! – luisfer

回答

5

你需要

new_df = sales[~sales.CustomerID.isin(badcu)] 
0

我認爲最好的方法是通過指數下降,試試吧,讓我知道

sales.drop(sales[sales.CustomerId.isin(badcu)].index.tolist()) 
2

您還可以使用query

sales.query('CustomerID not in @badcu')