Use isinstance, nothing else:
if isinstance(x, pd.DataFrame):
... # do something
PEP8 says explicitly that isinstance is the preferred way to check types
No: type(x) is pd.DataFrame
No: type(x) == pd.DataFrame
Yes: isinstance(x, pd.DataFrame)
And don't even think about
if obj.__class__.__name__ = 'DataFrame':
expect_problems_some_day()
isinstance handles inheritance (see What are the differences between type() and isinstance()?). For example, it will tell you if a variable is a string (either str or unicode), because they derive from basestring)
if isinstance(obj, basestring):
i_am_string(obj)
Specifically for pandas DataFrame objects:
import pandas as pd
isinstance(var, pd.DataFrame)
varis equal to an empty dataframe". What you really want is "if the type ofvaris equal to the typepd.DataFrame". You can check that usingisinstance