Подтвердить что ты не робот

Проверьте, является ли переменная dataframe

когда моя функция f вызывается с переменной, я хочу проверить, является ли var массивом данных pandas:

def f(var):
    if var == pd.DataFrame():
        print "do stuff"

Я думаю, что решение может быть довольно простым, но даже с

def f(var):
    if var.values != None:
        print "do stuff"

Я не могу заставить его работать как ожидалось.

4b9b3361

Ответ 1

Используйте isinstance, больше ничего:

if isinstance(x, pd.DataFrame):
    ... # do something

PEP8 прямо говорит, что isinstance является предпочтительным способом проверки типов

No:  type(x) is pd.DataFrame
No:  type(x) == pd.DataFrame
Yes: isinstance(x, pd.DataFrame)

И даже не думай о

if obj.__class__.__name__ = 'DataFrame':
    expect_problems_some_day()

isinstance обрабатывает наследование (см. в чем различия между type() и isinstance()?). Например, он скажет вам, является ли переменная строкой (str или unicode), потому что они являются производными от basestring)

if isinstance(obj, basestring):
    i_am_string(obj)

Специально для pandas DataFrame объектов:

import pandas as pd
isinstance(var, pd.DataFrame)

Ответ 2

Используйте встроенную isinstance().

import pandas as pd

def f(var):
    if isinstance(var, pd.DataFrame):
        print("do stuff")