ketika fungsi saya f dipanggil dengan variabel, saya ingin memeriksa apakah var adalah pandas dataframe:
def f(var):
if var == pd.DataFrame():
print "do stuff"
Saya kira solusinya mungkin cukup sederhana tetapi bahkan dengan
def f(var):
if var.values != None:
print "do stuff"
Saya tidak bisa membuatnya bekerja seperti yang diharapkan.
var
sama dengan dataframe kosong". Apa yang Anda inginkan adalah "jika jenisnyavar
sama dengan jenisnyapd.DataFrame
". Anda dapat memeriksanya menggunakanisinstance
Jawaban:
Gunakan
isinstance
, tidak ada yang lain:PEP8 mengatakan secara eksplisit bahwa
isinstance
cara yang disukai untuk memeriksa tipeDan jangan pernah memikirkannya
isinstance
menangani inheritance (lihat Apa perbedaan antara type () dan isinstance ()? ). Misalnya, ini akan memberi tahu Anda jika variabel adalah string (baikstr
atauunicode
), karena diturunkan daribasestring
)Khusus untuk
pandas
DataFrame
objek:sumber
Gunakan fungsi built-in
isinstance()
.sumber
import pandas as pd
, tetapi hanyaimport pandas
? Lakukan sajaor
pada kedua kemungkinan, atau adakah sesuatu yang lebih canggih yang tidak saya ketahui?import pandas.DataFrame as panda_type
dan kemudian di dalam kemudian memeriksa jenis array menggunakanisinstance(var, panda_type)