পান্ডসে কোনও কলাম রয়েছে কিনা তা কীভাবে পরীক্ষা করবেন


274

পান্ডাস ডেটা ফ্রেমে কোনও কলাম রয়েছে কিনা তা যাচাই করার কোনও উপায় আছে?

মনে করুন যে আমার কাছে নিম্নলিখিত ডেটা ফ্রেম রয়েছে:

>>> import pandas as pd
>>> from random import randint
>>> df = pd.DataFrame({'A': [randint(1, 9) for x in xrange(10)],
                       'B': [randint(1, 9)*10 for x in xrange(10)],
                       'C': [randint(1, 9)*100 for x in xrange(10)]})
>>> df
   A   B    C
0  3  40  100
1  6  30  200
2  7  70  800
3  3  50  200
4  7  50  400
5  4  10  400
6  3  70  500
7  8  30  200
8  3  40  800
9  6  60  200

এবং আমি গণনা করতে চাই df['sum'] = df['A'] + df['C']

তবে প্রথমে আমি df['A']উপস্থিত কিনা তা যাচাই করতে চাই এবং না থাকলে আমি df['sum'] = df['B'] + df['C']তার পরিবর্তে গণনা করতে চাই ।

উত্তর:


584

এটি কাজ করবে:

if 'A' in df:

তবে স্পষ্টতার জন্য, আমি সম্ভবত এটি লিখব:

if 'A' in df.columns:

2
অন্যদিকে যে কোনও একটি ব্যবহার করতে পারে: উপস্থিত না if not 'A' in df.columns:থাকলে একটি ক্রিয়াকলাপ চালানোর জন্যAdf
রবভ

81

এক বা একাধিক কলাম সমস্ত উপস্থিত রয়েছে কিনা তা পরীক্ষা করতে , আপনি এখানে set.issubsetযেমন ব্যবহার করতে পারেন :

if set(['A','C']).issubset(df.columns):
   df['sum'] = df['A'] + df['C']                

@ ব্রায়ানপ্যাক যেমন একটি মন্তব্যে উল্লেখ করেছেন, set([])বিকল্পভাবে কোঁকড়ানো ধনুর্বন্ধনী দ্বারা নির্মিত যেতে পারে,

if {'A', 'C'}.issubset(df.columns):

কোঁকড়া-ধনুর্বন্ধনী বাক্য গঠন নিয়ে আলোচনার জন্য এই প্রশ্নটি দেখুন ।

অথবা, আপনি তালিকা বোধগম্যতা ব্যবহার করতে পারেন, যেমন:

if all([item in df.columns for item in ['A','C']]):

11
বা ঠিক{'A', 'B'}.issubset()
bianpck

7

বিবৃতি ব্যবহার না করে কেবল অন্য কোনও উপায়ের পরামর্শ দেওয়ার জন্য, আপনি এর get()জন্য পদ্ধতিটি ব্যবহার করতে পারেন DataFrame। প্রশ্নের উপর ভিত্তি করে যোগফল সম্পাদনের জন্য:

df['sum'] = df.get('A', df['B']) + df['C']

DataFrameGET পদ্ধতি পাইথন অভিধান হিসাবে অনুরূপ আচরণ আছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.