我的数据框客户有一些“坏”行,此数据框中的键是CustomerID。我知道我应该放弃这些行。我有一个名为 badcu 的列表,其中显示Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
每个值对应一个不同的“坏”客户。
然后我有另一个数据框,我们称之为销售,所以我想删除所有不良客户的记录, badcu 列表中的记录。
如果我执行以下操作
[23770, 24572, 28773, ...]
我得到了一个数据帧,其中包含我想要丢弃的记录,但是如果我做了
sales[sales.CustomerID.isin(badcu)]
它返回一个数据帧,第一行被删除(这是一个合法的命令),其余的行完好无损(它不会删除坏的),我想我知道为什么会这样,但我仍然不喜欢我不知道如何丢弃不正确的客户ID行。
答案 0 :(得分:16)
你需要
new_df = sales[~sales.CustomerID.isin(badcu)]
答案 1 :(得分:4)
您也可以使用query
sales.query('CustomerID not in @badcu')
答案 2 :(得分:2)
我认为最好的方法是按索引删除,尝试并让我知道
sales.drop(sales[sales.CustomerId.isin(badcu)].index.tolist())