Ответ 1
Используйте isinstance
, больше ничего:
if isinstance(x, pd.DataFrame):
... # do something
PEP8 прямо говорит, что isinstance
является предпочтительным способом проверки типов
No: type(x) is pd.DataFrame
No: type(x) == pd.DataFrame
Yes: isinstance(x, pd.DataFrame)
И даже не думай о
if obj.__class__.__name__ = 'DataFrame':
expect_problems_some_day()
isinstance
обрабатывает наследование (см. в чем различия между type() и isinstance()?). Например, он скажет вам, является ли переменная строкой (str
или unicode
), потому что они являются производными от basestring
)
if isinstance(obj, basestring):
i_am_string(obj)
Специально для pandas
DataFrame
объектов:
import pandas as pd
isinstance(var, pd.DataFrame)