जाँच करें कि क्या चर डेटाफ़्रेम है


130

जब मेरे फंक्शन f को एक वैरिएबल के साथ बुलाया जाता है, तो मैं यह जांचना चाहता हूं कि क्या var एक पांडा डेटाफ्रेम है:

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

मुझे लगता है कि समाधान काफी सरल हो सकता है लेकिन इसके साथ भी

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

मुझे उम्मीद की तरह काम करने के लिए यह नहीं मिल सकता है।


1
आपका कोड कहता है "यदि varखाली डेटाफ़्रेम के बराबर है"। आप वास्तव में क्या चाहते हैं "यदि प्रकार के प्रकार के varबराबर है pd.DataFrame"। आप का उपयोग कर जाँच कर सकते हैंisinstance
Katriel

जवाबों:


180

उपयोग 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विरासत संभालती है (देखें कि प्रकार () और आइंस्टीन ()? ) के बीच अंतर क्या हैं । उदाहरण के लिए, यह आपको पता चलेगा कि एक चर एक स्ट्रिंग (या तो है strया unicode,), क्योंकि वे से निकाले जाते हैं basestring)

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

विशेष रूप से pandas DataFrameवस्तुओं के लिए:

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

131

अंतर्निहित isinstance()फ़ंक्शन का उपयोग करें ।

import pandas as pd

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

3
आप इसे उस स्थिति के लिए कैसे सामान्य कर सकते हैं जिसमें कोई उपयोगकर्ता आपके द्वारा परिभाषित फ़ंक्शन का उपयोग कर सकता है, लेकिन नहीं import pandas as pd, बल्कि इसके बजाय import pandas? बस orदोनों संभावनाओं पर प्रदर्शन करते हैं , या कुछ और अधिक परिष्कृत है जो मुझे नहीं पता है?
n1k31t4

1
एक संभावित समाधान फ़ंक्शन के अंदर आयात विवरण डाल सकता है, इसलिए उपयोगकर्ता को किसी अन्य विधि का उपयोग करके पांडा आयात करने का कोई मौका नहीं है। चीजों को गति देने के लिए (एक साधारण जाँच के लिए पूरे पांडा पुस्तकालय के आयात से बचने के लिए) आप बस कुछ का उपयोग कर सकते हैं import pandas.DataFrame as panda_typeऔर फिर अंदर सरणी का उपयोग करके जाँच कर सकते हैंisinstance(var, panda_type)
pacificgilly1992
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.