假设我具有以下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
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']
。#1 楼
这将起作用:if 'A' in df:
但是为了清楚起见,我可能将其写为:
if 'A' in df.columns:
#2 楼
要检查是否都存在一个或多个列,可以使用set.issubset
,如下所示:if set(['A','C']).issubset(df.columns):
df['sum'] = df['A'] + df['C']
正如@brianpck在注释中指出的那样,可以用花括号,
if {'A', 'C'}.issubset(df.columns):
有关花括号语法的讨论,请参见此问题。
或者,您可以使用列表推导,如:
if all([item in df.columns for item in ['A','C']]):
评论
或者只是{'A','B'}。issubset()
– brianpck
16 Dec 8'在18:13
#3 楼
只是建议另一种方法而不使用if语句,您可以对get()
使用DataFrame
方法。用于基于以下问题执行总和:df['sum'] = df.get('A', df['B']) + df['C']
DataFrame
get方法的行为与python字典相似。
评论
否则,可以使用:如果df.columns中不是'A',则执行一个操作(如果df中不存在A)
– Robvh
20-2-5在10:59