如何检查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语句的情况下提供另一种方法,您可以使用DataFrame的get()方法。 为了执行这个问题的总和: 
 df['sum'] = df.get('A', df['B']) + df['C'] 
  DataFrame get方法与python字典具有相似的行为。