Результат вашего примера не True
, это False
. Если вы сделаете df.dtypes.values
, вы увидите, что это не строка 'int64'
, а dtype('int64')
, поэтому isin(['int64'])
всегда должен возвращать False
Я тестировал в Jupyter
, а выход всегда False
df = pd.DataFrame({'a':[1,2,3]})
print(df.dtypes.isin(['int64']))
a False
dtype: bool
print(df.dtypes.values)
array([dtype('int64')], dtype=object)
Решение состоит в том, чтобы преобразовать df.dtypes
в str
:
df.dtypes.apply(str).values
array(['int64'], dtype=object)
так что теперь вы можете сделать isin
:
df.dtypes.apply(str).isin(['int64'])
a True
dtype: bool