如何检查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字典具有相似的行为。