My intend
I like to filter a data frame dynamically by a dict that is holding a list of dicts with column and value information to filter on.
Expected result should look like this:
result = {'brand': ['Honda','Honda','Toyota'],
'model': ['a','b','d']
}
My data frame
cars = {'brand': ['Honda','Honda','Honda','Toyota','Toyota','Audi'],
'model': ['a','b','c','d','a','b'],
}
My dict
Is holding information about relation between cars:
relation = {
'relation1':[
{'brand':'Honda','model':'a'},
{'brand':'Honda','model':'b'},
{'brand':'Toyota','model':'d'}
],
'relation2':[
{'brand':'...','model':'...'},
{'brand':'...','model':'...'}
]
}
My try to setup list comprehension
' | '.join([f'{repr(k)}=={repr(v)}' for d in relation['relation1'] for k,v in d.items()])
Issues
Implement filter will give an error:
KeyError: "brand=='Honda' | model=='a' | brand=='Honda' | model=='b' | brand=='Toyota' | model=='d'"Adjusting filter to combine the dict values inside with
&and outside with|so filter looks like:(brand=='Honda' & model=='a') | (brand=='Honda' & model=='b') | (brand=='Toyota' & model=='d')