如何检查pandas是否存在一列

有没有办法来检查一个列中是否存在一个Pandas DataFrame?

假设我有以下的DataFrame:

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

谢谢您的帮助。

这将工作:

 if 'A' in df: 

但为了清楚起见,我可能会把它写成:

 if 'A' in df.columns: 

要检查一个或多个列是否都存在,可以使用set.issubset ,如下所示:

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

编辑:正如@brianpck在评论中指出的那样, set([])可以用花括号来构造:

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

看到这个问题的花括号语法的讨论。

只是在不使用if语句的情况下提供另一种方法,您可以使用DataFrameget()方法。 为了执行这个问题的总和:

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

DataFrame get方法与python字典具有相似的行为。