Reputation: 5537
when my function f is called with a variable I want to check if var is a pandas dataframe:
def f(var):
if var == pd.DataFrame():
print "do stuff"
I guess the solution might be quite simple but even with
def f(var):
if var.values != None:
print "do stuff"
I can't get it to work like expected.
Upvotes: 252
Views: 308581
Reputation: 137
Or you can use the simplest solution: type(x)
.
If it is Data Frame it will output pandas.core.frame.DataFrame
.
Upvotes: 6
Reputation: 64443
Use the built-in isinstance()
function.
import pandas as pd
def f(var):
if isinstance(var, pd.DataFrame):
print("do stuff")
Upvotes: 158
Reputation: 33827
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)
Upvotes: 376