[python] 변수가 데이터 프레임인지 확인

내 함수 f가 변수로 호출 될 때 var가 pandas 데이터 프레임인지 확인하고 싶습니다.

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

해결책은 매우 간단 할 수 있지만

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

예상대로 작동하지 않습니다.



답변

isinstance다른 것은 사용 하지 마십시오.

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

PEP8isinstance유형을 확인하는 데 선호되는 방법 이라고 명시 적으로 말합니다.

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 ()의 차이점무엇입니까? 참조 ). 변수가 문자열 (중 하나 인 경우 예를 들어, 당신을 말할 것이다 strunicode)가에서 파생 때문에 basestring)

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

특히 pandas DataFrame개체의 경우 :

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


답변

내장 isinstance()기능을 사용하십시오 .

import pandas as pd

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


답변