如果在“搜索”列中找到字符串“ something”,这两种删除行的方法有什么区别?
第一种方法:
mydata = mydata.set_index("search")
mydata = mydata.drop("something", axis=0)
这种方法看起来很简单并且可以理解。
第二种方法:
mydata = mydata[~mydata.select_dtypes(['object']).eq('something').any(1)]
我真的不知道这种方法如何工作。在此行中指定删除/删除行的位置?为什么它与“对象”而不是“搜索”一起使用? “〜”代表什么?我只是在文档中找不到它。
答案 0 :(得分:1)
您的两种方法不同。让我们看一下第二种方法。
select_dtypes
的子数据帧 mydata.select_dtypes(['object'])
仅对{type {1}}系列的数据框进行过滤。您可以通过object
提取每个系列的dtype。通常,非数字系列将具有mydata.dtypes
dtype,它表示类似于object
的指针序列。
在这种情况下,只有在系列list
是唯一的search
dtype系列时,您的两个方法才对齐。
object
测试是否相等由于第1步返回了数据帧,即使它仅包含一个序列,eq
也将返回布尔值的数据帧。
pd.DataFrame.eq
按行测试任何True
值接下来,您的第二种方法将检查是否有任何值是any
行(True
)。同样,如果您唯一的axis=1
系列是object
,则这与您的第一种方法相同。
如果您有多个search
系列,则您的两个方法可能无法对齐,因为另一个系列等于object
,因此可能会排除一行。