quando minha função f é chamada com uma variável, quero verificar se var é um dataframe do pandas:
def f(var):
if var == pd.DataFrame():
print "do stuff"
Eu acho que a solução pode ser bastante simples, mas mesmo com
def f(var):
if var.values != None:
print "do stuff"
Não consigo fazê-lo funcionar como esperado.
var
é igual a um quadro de dados vazio". O que você realmente deseja é "se o tipo devar
for igual ao tipopd.DataFrame
". Você pode verificar isso usandoisinstance
Respostas:
Use
isinstance
, nada mais:O PEP8 diz explicitamente que
isinstance
é a maneira preferida de verificar os tiposE nem pense em
isinstance
lida com herança (consulte Quais são as diferenças entre type () e isinstance ()? ). Por exemplo, ele informará se uma variável é uma string (oustr
ouunicode
), porque elas derivam debasestring
)Especificamente para
pandas
DataFrame
objetos:fonte
Use a
isinstance()
função interna.fonte
import pandas as pd
, mas apenasimport pandas
? Basta executar umor
em ambas as possibilidades, ou há algo mais sofisticado que eu não conheço?import pandas.DataFrame as panda_type
e, em seguida, verificar o tipo de matriz usandoisinstance(var, panda_type)