简体   繁体   English

检查 python 字典中的空 pandas dataframe

[英]Check for empty pandas dataframe in python dictionary

I am trying to check whether the dictionary having multiple key:value pairs of dataframes contains any dataframe with empty rows or dataframe doesn't exist in dictionary which should be there while saving in dictionary earlier.我正在尝试检查具有多个key:value数据帧对的字典是否包含任何具有空行的 dataframe 或 dataframe 不存在于字典中,而在早期保存在字典中时应该存在。 I have tried this but no luck我试过这个但没有运气

if __name__=="__main__":
   
   # dict contains {a:df1, b:df2}
   if [bool(v) for (k, v) in dict.items()] == False :
      print('No data available')
   sys.exit()
   else:
   # DO SOMETHING WITH DATA

Use DataFrame.empty with any for test if at least one DataFrame is empty:如果至少有一个DataFrame为空,则使用DataFrame.emptyany进行测试:

dict1 = {'a': pd.DataFrame(), 'b':pd.DataFrame([5])}

print ([v.empty for (k, v) in dict1.items()])
[True, False]

if any(v.empty for (k, v) in dict1.items()):
    print('No data available')
    No data available

dict1 = {'a': pd.DataFrame([2]), 'b':pd.DataFrame([1])}

print ([v.empty for (k, v) in dict1.items()])
[False, False]

if any(v.empty for (k, v) in dict1.items()):
    print('No data available')

dict1 = {'a': pd.DataFrame(), 'b':pd.DataFrame()}

print ([v.empty for (k, v) in dict1.items()])
[True, True]

if any(v.empty for (k, v) in dict1.items()):
    print('No data available')
    No data available

EDIT: For test some keys is possible use set - order of values is not important:编辑:为了测试一些键是可能的使用set - 值的顺序并不重要:

dict1 = {'a': pd.DataFrame(), 'b':pd.DataFrame()}

L = ['c','a','b']

if (set(dict1.keys()) != set(L)):
    print('missing some key!')
    missing some key!
    
dict1 = {'a': pd.DataFrame(), 'b':pd.DataFrame(), 'c': pd.DataFrame()}

L = ['c','a','b']

if (set(dict1.keys()) != set(L)):
    print('missing some key!')

EDIT1: For combine both conditions use or : EDIT1:对于结合这两个条件使用or

if (set(dict1.keys()) != set(L)) or any(v.empty for (k, v) in dict1.items()):
    print('missing some key or some empty df!')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM