繁体   English   中英

如何检查 Pandas 中是否存在列

[英]How to check if a column exists in Pandas

如何检查 Pandas DataFrame df中是否存在列?

   A   B    C
0  3  40  100
1  6  30  200

我将如何检查上述 DataFrame 中是否存在列"A"以便我可以计算:

df['sum'] = df['A'] + df['C']

如果"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 all(item in df.columns for item in ['A','C']):

只是为了建议另一种不使用 if 语句的方法,您可以对DataFrame使用get()方法。 根据问题执行求和:

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

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

您可以使用集合的方法issuperset

set(df).issuperset(['A', 'B'])
# set(df.columns).issuperset(['A', 'B'])

您还可以在列上调用isin()以检查它是否存在并在结果上调用any()以将其减少为单个 boolean 值1

if df.columns.isin(['A', 'C']).any():
    # do something

要检查列名是否不存在,可以在 if 子句中使用not运算符:

if 'A' not in df:
    # do something

或与isin().any()调用一起。

if not df.columns.isin(['A', 'C']).any():
    # do something

1:对列的 isin isin()调用返回一个 boolean 数组,如果它是AC ,则其值为 True,否则为 False。 数组的真值是不明确的,因此any()调用将其简化为单个 True/False 值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM