Home > Enterprise >  Check for empty pandas dataframe in python dictionary
Check for empty pandas dataframe in python dictionary

Time:01-25

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. 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

CodePudding user response:

Use DataFrame.empty with any for test if at least one DataFrame is empty:

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:

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:

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