熊猫中drop和select_dtypes之间的区别

时间:2018-11-01 09:40:18

标签: python pandas

如果在“搜索”列中找到字符串“ something”,这两种删除行的方法有什么区别?

第一种方法:

mydata = mydata.set_index("search")
mydata = mydata.drop("something", axis=0)

这种方法看起来很简单并且可以理解。

第二种方法:

mydata = mydata[~mydata.select_dtypes(['object']).eq('something').any(1)]

我真的不知道这种方法如何工作。在此行中指定删除/删除行的位置?为什么它与“对象”而不是“搜索”一起使用? “〜”代表什么?我只是在文档中找不到它。

1 个答案:

答案 0 :(得分:1)

您的两种方法不同。让我们看一下第二种方法。

步骤1:通过select_dtypes的子数据帧

mydata.select_dtypes(['object'])仅对{type {1}}系列的数据框进行过滤。您可以通过object提取每个系列的dtype。通常,非数字系列将具有mydata.dtypes dtype,它表示类似于object的指针序列。

在这种情况下,只有在系列list是唯一的search dtype系列时,您的两个方法才对齐。

步骤2:通过object测试是否相等

由于第1步返回了数据帧,即使它仅包含一个序列,eq也将返回布尔值的数据帧。

步骤3:通过pd.DataFrame.eq按行测试任何True

接下来,您的第二种方法将检查是否有任何值是any行(True)。同样,如果您唯一的axis=1系列是object,则这与您的第一种方法相同。

如果您有多个search系列,则您的两个方法可能无法对齐,因为另一个系列等于object,因此可能会排除一行。

相关问题