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.
Use the built-in
import pandas as pd def f(var): if isinstance(var, pd.DataFrame): print("do stuff")
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
unicode), because they derive from
if isinstance(obj, basestring): i_am_string(obj)
import pandas as pd isinstance(var, pd.DataFrame)
Or you can use the simplest solution:
If it is Data Frame it will output