Ваши два метода не идентичны. Давайте посмотрим на второй метод по частям.
Шаг 1: поднабор данных с помощью select_dtypes
mydata.select_dtypes(['object'])
фильтрует ваш фрейм данных только для серии с object
dtype. Вы можете извлечь dtype каждой серии через mydata.dtypes
. Как правило, нечисловые серии будут иметь тип object
dtype, который указывает последовательность указателей, аналогично list
.
В этом случае ваши два метода выравниваются, только когда серия search
является единственной object
серией dtype.
Шаг 2: Проверка на равенство с помощью eq
Поскольку шаг 1 возвращает фрейм данных , даже если он содержит только одну серию, pd.DataFrame.eq
вернет фрейм данных с логическими значениями.
Шаг 3: Проверка любого значения True
построчно с помощью any
Затем ваш второй метод проверяет, является ли какое-либо значение True
построчным (axis=1
). Опять же, если ваша единственная серия object
равна search
, то это равнозначно тому же, что и ваш первый метод.
Если у вас несколько рядов object
, то ваши два метода могут не совпадать, так как строка может быть исключена из-за того, что другой ряд равен 'something'
.