是否有更复杂的做法
if numpy.all(map(lambda c: c in df.columns, ['Column 1', 'Columns 2'])):
do_something()
答案 0 :(得分:6)
您可以使用Index.isin
:
df = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (df)
A B C D E F
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 3 6 9 5 6 3
如果需要使用any
cols = ['A', 'B']
print (df.columns.isin(cols).any())
True
cols = ['W', 'B']
print (df.columns.isin(cols).any())
True
cols = ['W', 'Z']
print (df.columns.isin(cols).any())
False
如果需要检查all
值:
cols = ['A', 'B', 'C','D','E','F']
print (df.columns.isin(cols).all())
True
cols = ['W', 'Z']
print (df.columns.isin(cols).all())
False
答案 1 :(得分:1)
我知道这是一个旧帖子...
来自此code:
if set(['Column 1', 'Column 2']).issubset(df.columns):
do_something()
或更优雅:
if {'Column 1', 'Column 2'}.issubset(df.columns):
do_something()
答案 2 :(得分:0)
给定答案的一个问题(也许它适用于OP)是它测试是否所有数据框的列都在给定列表中 - 但不是所有给定列表的项都在数据框中列。
我的解决方案是:
test = all([ i in df.columns for i in ['A', 'B'] ])
其中test
是简单的True
或False
答案 3 :(得分:0)
您可以使用元组访问多列索引中的列:
if ("key1", "key2") in df.columns:
print("we have the column")