kiedy moja funkcja f jest wywoływana ze zmienną, chcę sprawdzić, czy var jest ramką danych pandy:
def f(var):
if var == pd.DataFrame():
print "do stuff"
Myślę, że rozwiązanie może być dość proste, ale nawet z
def f(var):
if var.values != None:
print "do stuff"
Nie mogę zmusić go do działania zgodnie z oczekiwaniami.
var
jest równe pustej ramce danych”. To, czego naprawdę chcesz, to „jeśli typvar
jest równy typowipd.DataFrame
”. Możesz to sprawdzić za pomocąisinstance
Odpowiedzi:
Użyj
isinstance
, nic więcej:PEP8 wyraźnie mówi, że
isinstance
jest to preferowany sposób sprawdzania typówI nawet o tym nie myśl
isinstance
obsługuje dziedziczenie (zobacz Jakie są różnice między type () a isinstance ()? ). Na przykład powie ci, czy zmienna jest ciągiem (albostr
lubunicode
), ponieważ pochodzi odbasestring
)Specjalnie dla
pandas
DataFrame
obiektów:źródło
Użyj funkcji wbudowanej
isinstance()
.źródło
import pandas as pd
, a zamiast tego po prostuimport pandas
? Po prostu wykonajor
na obu możliwościach, czy jest coś bardziej wyrafinowanego, o którym nie wiem?import pandas.DataFrame as panda_type
a następnie wewnątrz, a następnie sprawdzić typ tablicy za pomocąisinstance(var, panda_type)