Wenn meine Funktion f mit einer Variablen aufgerufen wird, möchte ich überprüfen, ob var ein Pandas-Datenrahmen ist:
def f(var):
if var == pd.DataFrame():
print "do stuff"
Ich denke, die Lösung könnte recht einfach sein, aber auch mit
def f(var):
if var.values != None:
print "do stuff"
Ich kann es nicht wie erwartet zum Laufen bringen.
var
gleich einem leeren Datenrahmen". Was Sie wirklich wollen, ist "wenn der Typvar
gleich dem Typ istpd.DataFrame
". Sie können dies überprüfen mitisinstance
Antworten:
Verwenden Sie
isinstance
nichts anderes:PEP8 sagt ausdrücklich, dass dies
isinstance
die bevorzugte Methode zum Überprüfen von Typen istUnd denk nicht mal darüber nach
isinstance
behandelt die Vererbung (siehe Was sind die Unterschiede zwischen type () und isinstance ()? ). Zum Beispiel wird es Ihnen sagen , ob eine Variable eine Zeichenfolge (entwederstr
oderunicode
), weil sie aus ableitenbasestring
)Speziell für
pandas
DataFrame
Objekte:quelle
Verwenden Sie die eingebaute
isinstance()
Funktion.quelle
import pandas as pd
, sondern nurimport pandas
? Führen Sie einfachor
beide Möglichkeiten aus, oder gibt es etwas Anspruchsvolleres, von dem ich nichts weiß?import pandas.DataFrame as panda_type
und dann den Array-Typ mitisinstance(var, panda_type)