quand ma fonction f est appelée avec une variable, je veux vérifier si var est un dataframe pandas:
def f(var):
if var == pd.DataFrame():
print "do stuff"
Je suppose que la solution peut être assez simple mais même avec
def f(var):
if var.values != None:
print "do stuff"
Je ne peux pas le faire fonctionner comme prévu.
var
est égal à un dataframe vide". Ce que vous voulez vraiment, c'est "si le type devar
est égal au typepd.DataFrame
". Vous pouvez vérifier cela en utilisantisinstance
Réponses:
Utilisez
isinstance
, rien d'autre:PEP8 dit explicitement que
isinstance
c'est la meilleure façon de vérifier les typesEt ne pense même pas
isinstance
gère l'héritage (voir Quelles sont les différences entre type () et isinstance ()? ). Par exemple, il vous dira si une variable est une chaîne (soitstr
ouunicode
), car elle dérive debasestring
)Spécifiquement pour les
pandas
DataFrame
objets:la source
Utilisez la
isinstance()
fonction intégrée.la source
import pandas as pd
, mais simplementimport pandas
? Jouez simplementor
sur les deux possibilités, ou y a-t-il quelque chose de plus sophistiqué que je ne connais pas?import pandas.DataFrame as panda_type
, puis à l'intérieur, puis vérifier le type de tableau en utilisantisinstance(var, panda_type)