如何检查Pandas中是否存在列

2024-04-24 04:11:37 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有方法检查Pandas数据帧中是否存在列?

假设我有以下数据帧:

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


Tags: 数据方法infromimportpandasdffor
3条回答

这将起作用:

if 'A' in df:

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

if 'A' in df.columns:

为了建议不使用if语句的另一种方法,您可以使用get()方法来处理DataFrames

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

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

要检查是否存在一个或多个列,可以使用^{},如下所示:

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

正如@brianpck在注释中指出的,set([])也可以用花括号构造

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

有关花括号语法的讨论,请参见this question

或者,您可以使用列表理解,如:

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

相关问题 更多 >