ভেরিয়েবল ডাটাফ্রেম কিনা তা পরীক্ষা করে দেখুন


130

আমার ফাংশনটি যখন ভেরিয়েবলের সাথে ডাকা হয় তখন আমি যাচাই করতে চাই যে ভ্যার্ডটি পান্ডাস ডেটাফ্রেম কিনা:

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
ক্যাট্রিয়েল

উত্তর:


180

ব্যবহার করুন isinstance, অন্য কিছুই:

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

পিইপি 8 স্পষ্টভাবে বলেছে 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)
প্যাসিফিকগিলি 1992
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.