检查多列索引是否存在

时间:2016-06-28 07:43:34

标签: python pandas

是否有更复杂的做法

if numpy.all(map(lambda c: c in df.columns, ['Column 1', 'Columns 2'])):
    do_something()

4 个答案:

答案 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是简单的TrueFalse

答案 3 :(得分:0)

您可以使用元组访问多列索引中的列:

if ("key1", "key2") in df.columns:
    print("we have the column")