检查多个列索引是否存在

Hen*_*ese 3 python pandas

有没有更复杂的方法

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

小智 10

我知道这是一个旧帖子......

从这个答案

if set(['Column 1', 'Column 2']).issubset(df.columns):
    do_something()
Run Code Online (Sandbox Code Playgroud)

或者更优雅一点:

if {'Column 1', 'Column 2'}.issubset(df.columns):
    do_something()
Run Code Online (Sandbox Code Playgroud)


jez*_*ael 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
Run Code Online (Sandbox Code Playgroud)

如果需要检查至少一个值的使用 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
Run Code Online (Sandbox Code Playgroud)

如果需要检查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
Run Code Online (Sandbox Code Playgroud)