如何检查所有必需列或必需列中的任何一列是否可用python

时间:2019-05-10 07:13:59

标签: python-3.x pandas

我的文件夹中包含多个文本文件,我正在循环读取文件夹中的文件,并使用10列进行处理,我想检查数据框中是否有A,C和D列可用,然后再进行进一步处理,否则只需查找下一个文件< / p>

如果我们想检查一栏的可用性,我知道我们可以使用它。

if 'A' in df:
   print('yes')

1 个答案:

答案 0 :(得分:4)

如果一个集合中的所有元素都存在于另一个集合中(作为参数传递),则issubset()方法将返回True。如果不是,则返回False

df = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],

})

print (set(['A', 'C', 'D']).issubset(df.columns))
True
print (set(['A',  'E']).issubset(df.columns))
False

因此使用:

if (set(['A', 'C', 'D']).issubset(df.columns)):
    print ('yes')
    yes

编辑:

如果两个集合是不相交的集合,则isdisjoint()方法将返回True。如果不是,则返回False

print (not set(['A', 'C', 'D']).isdisjoint(df.columns))
True
print (not set(['A', 'E']).isdisjoint(df.columns))
True

print (not set(['R', 'E']).isdisjoint(df.columns))
False

intersection()方法返回一个新集合,其中包含所有集合共有的元素。然后,如果转换为布尔值,则返回False的空集:

print (bool(set(['A', 'C', 'D']).intersection(df.columns)))
True
print (bool(set(['A', 'E']).intersection(df.columns)))
True
print (bool(set(['R', 'E']).intersection(df.columns)))
False