[英]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 数组,如果它是A
或C
,则其值为 True,否则为 False。 数组的真值是不明确的,因此any()
调用将其简化为单个 True/False 值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.