So I have been referencing this previous question posted here Filter pandas dataframe from tuples.
But the problem I am trying to solve is slightly different.
I have a list of tuples. Each tuple represents a different set of filters I would like to apply to a dataframe accross multiple columns, so I can isolate the records to perform additional tasks.
Whenever I try and filter by a single tuple within the list of tuples, the dataframe I get back has no records.. If I break the tuple values out in a very long form way it works fine. Not sure what I am missing or not thinking about here..
Using the same example from the post I have been referencing....
AB_col = [(0,230), (10,215), (15, 200), (20, 185), (40, 177),
(0,237), (10,222), (15, 207), (20, 192), (40, 184)]
sales = [{'account': 'Jones LLC', 'A': 0, 'B': 230, 'C': 140},
{'account': 'Alpha Co', 'A': 20, 'B': 192, 'C': 215},
{'account': 'Blue Inc', 'A': 50, 'B': 90, 'C': 95 }]
df = pd.DataFrame(sales)
The answer from the other question
df = df[df[["A","B"]].apply(tuple, 1).isin(AB_col)]
Which returns
However, I want to only get one record back, that matches the first tuple in the list of tuples. So I tried this
df[df[["A"]].apply(tuple,1).isin(AB_col[0])]
But get no records returned
However, I can do this which gets me the results I want, but when I have essentially a list of tuples that is every combination of column values to use a filters for different levels of calculations, this seems like way too much code to have to use to product the desired results
df[(df['A']==AB_col[0][0]) & (df['B']==AB_col[0][1])]
Which gets me results I want
long form results but what i need
Is there a way to get to this same result more efficiently?
Thanks!
source https://stackoverflow.com/questions/73129334/filter-pandas-dataframe-by-multiple-columns-using-tuple-from-list-of-tuples
Comments
Post a Comment