Pandas:如何根据列表从数据框中删除行?

lui*_*fer 7 python dataframe pandas

我有一些数据框客户有一些"坏"行,此数据框中的键是CustomerID.我知道我应该放弃这些行.我有一个名为badcu的列表,表示[23770, 24572, 28773, ...]每个值对应一个不同的"坏"客户.

然后我有另一个数据框,让我们称之为销售,所以我想删除坏客户的所有记录,坏账户列表中的那些.

如果我做以下事情

sales[sales.CustomerID.isin(badcu)]
Run Code Online (Sandbox Code Playgroud)

我得到了一个数据帧,其中包含我想要删除的记录,但是如果我这样做的话

sales.drop(sales.CustomerID.isin(badcu))
Run Code Online (Sandbox Code Playgroud)

它返回一个数据帧,第一行被删除(这是一个合法的命令),其余的行完好无损(它不会删除坏的),我想我知道为什么会这样,但我还是不知道如何删除不正确的客户ID行.

Vai*_*ali 22

你需要

new_df = sales[~sales.CustomerID.isin(badcu)]
Run Code Online (Sandbox Code Playgroud)


piR*_*red 5

你也可以使用 query

sales.query('CustomerID not in @badcu')
Run Code Online (Sandbox Code Playgroud)