cuando se llama a mi función f con una variable, quiero verificar si var es un marco de datos de pandas:
def f(var):
if var == pd.DataFrame():
print "do stuff"
Supongo que la solución podría ser bastante simple, pero incluso con
def f(var):
if var.values != None:
print "do stuff"
No puedo hacer que funcione como se esperaba.
var
es igual a un marco de datos vacío". Lo que realmente quieres es "si el tipo devar
es igual al tipopd.DataFrame
". Puede verificar eso usandoisinstance
Respuestas:
Uso
isinstance
, nada más:PEP8 dice explícitamente que esa
isinstance
es la forma preferida de verificar tiposY ni siquiera pienses en
isinstance
maneja la herencia (consulte ¿Cuáles son las diferencias entre type () e isinstance ()? ). Por ejemplo, le dirá si una variable es una cadena (ya seastr
ounicode
), porque derivan debasestring
)Específicamente para
pandas
DataFrame
objetos:fuente
Use la
isinstance()
función incorporada.fuente
import pandas as pd
, sino simplementeimport pandas
? Simplemente realice unaor
en ambas posibilidades, o ¿hay algo más sofisticado que no conozca?import pandas.DataFrame as panda_type
y luego adentro y luego verificar el tipo de matriz usandoisinstance(var, panda_type)