如何删除列值在集合中的DataFrame行?

时间:2015-08-03 17:48:09

标签: python pandas set dataframe

我有一套

remove_set

我想删除数据框中列值在该集合中的所有行。

df = df[df.column_in_set not in remove_set]

这给了我错误:

'Series' objects are mutable, thus they cannot be hashed. 

解决这个问题的最大熊猫/ pythonic方法是什么?我可以遍历行并找出要排除的ilocs,但这看起来有点不合适。

一些样本输入和预期输出。

输入:

 column_in_set value_2 value_3
 1             'a'      3
 2             'b'      4
 3             'c'      5
 4             'd'      6

remove = set([2,4])

输出:

column_in_set value_2 value_3
1             'a'      3
3             'c'      5

1 个答案:

答案 0 :(得分:8)

要进行选择,您可以写:

df[~df['column_in_set'].isin(remove)]

isin()只检查列/ Series的每个值是否在一个集合(或列表或其他可迭代)中,返回一个布尔系列。

在这种情况下,我们只希望在remove中包含的DataFrame行,因此我们用~反转布尔值,然后用它来索引DataFrame。