comprobar si la variable es el dataframe

cuando se llama a mi función f con una variable, quiero comprobar si var es un dataframe de pandas:

def f(var): if var == pd.DataFrame(): print "do stuff" 

Supongo que la solución puede ser bastante simple pero incluso con

 def f(var): if var.values != None: print "do stuff" 

No puedo hacerlo funcionar como se esperaba.

Usa isinstance , nada más:

 if isinstance(x, pd.DataFrame): ... # do something 

PEP8 dice explícitamente que la isinstance es la forma preferida de verificar tipos

 No: type(x) is pd.DataFrame No: type(x) == pd.DataFrame Yes: isinstance(x, pd.DataFrame) 

Y ni siquiera pienses en

 if obj.__class__.__name__ = 'DataFrame': expect_problems_some_day() 

isinstance maneja la herencia (consulte ¿Cuáles son las diferencias entre type () y isinstance ()? ). Por ejemplo, le dirá si una variable es una cadena (ya sea str o unicode ), porque se derivan de la basestring de basestring )

 if isinstance(obj, basestring): i_am_string(obj) 

Específicamente para los objetos de pandas DataFrame :

 import pandas as pd isinstance(var, pd.DataFrame) 

Utilice la función incorporada isinstance() .

 import pandas as pd def f(var): if isinstance(var, pd.DataFrame): print("do stuff")