पांडों में एक कॉलम मौजूद है या नहीं, इसकी जांच कैसे करें


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']इसके बजाय गणना करना चाहता हूं ।

जवाबों:


585

यह काम करेगा:

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']                

जैसा कि @brianpck एक टिप्पणी में बताते हैं, set([])वैकल्पिक रूप से घुंघराले ब्रेसिज़ के साथ निर्माण किया जा सकता है,

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

कर्ली-ब्रेसेस सिंटैक्स की चर्चा के लिए यह प्रश्न देखें ।

या, आप एक सूची समझ का उपयोग कर सकते हैं, जैसे:

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

11
या बस{'A', 'B'}.issubset()
ब्रायनकॉक

7

यदि बयानों का उपयोग किए बिना एक और तरीका सुझाने के लिए, आप एस के get()लिए विधि का उपयोग कर सकते हैं DataFrame। प्रश्न के आधार पर राशि का प्रदर्शन करने के लिए:

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

DataFrameप्राप्त विधि अजगर शब्दकोशों के रूप में समान व्यवहार किया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.