2017-04-07 144 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')