我如何检查一个列是否存在在熊猫数据框架df?
A B C
0 3 40 100
1 6 30 200
我如何检查列“A”是否存在于上面的DataFrame中,以便我可以计算:
df['sum'] = df['A'] + df['C']
如果A不存在
df['sum'] = df['B'] + df['C']
我如何检查一个列是否存在在熊猫数据框架df?
A B C
0 3 40 100
1 6 30 200
我如何检查列“A”是否存在于上面的DataFrame中,以便我可以计算:
df['sum'] = df['A'] + df['C']
如果A不存在
df['sum'] = df['B'] + df['C']
当前回答
你也可以在列上调用isin()来检查它是否存在,并在结果上调用any()来将它减少到一个布尔值e1:
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()在列上调用返回一个布尔数组,如果它是a或C,则值为True,否则为False。数组的真值是不明确的,因此任何()调用都将其简化为一个True/False值。
其他回答
你可以使用set的方法issuperset:
set(df).issuperset(['A', 'B'])
# set(df.columns).issuperset(['A', 'B'])
这是可行的:
if 'A' in df:
但为了清晰起见,我可能会这样写:
if 'A' in df.columns:
要检查一个或多个列是否都存在,可以使用set。is子集,如:
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']):
你也可以在列上调用isin()来检查它是否存在,并在结果上调用any()来将它减少到一个布尔值e1:
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()在列上调用返回一个布尔数组,如果它是a或C,则值为True,否则为False。数组的真值是不明确的,因此任何()调用都将其简化为一个True/False值。
为了建议另一种不使用if语句的方法,您可以对DataFrames使用get()方法。执行基于问题的和:
df['sum'] = df.get('A', df['B']) + df['C']
DataFrame get方法的行为与python字典类似。