我的文件夹中包含多个文本文件,我正在循环读取文件夹中的文件,并使用10列进行处理,我想检查数据框中是否有A,C和D列可用,然后再进行进一步处理,否则只需查找下一个文件< / p>
如果我们想检查一栏的可用性,我知道我们可以使用它。
if 'A' in df:
print('yes')
答案 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