Skip to content Skip to sidebar Skip to footer

How To Test All Possible Combinations With True/false Statement In Python?

I have two DataFrames where each column contain True/False statements. I am looking for a way to test all possible combinations and find out where 'True' for each row in df1 also i

Solution 1:

You can use the combinations() function in itertools to extract all the possible combinations of the columns of the 2 data frames, and then use the product() function in pandas to identify the rows where all the columns in the considered combination are equal to True. I included an example below, which considers all combinations of either 2 or 3 columns.

import pandas as pd
from itertools import combinations

df1 = pd.DataFrame({"Main1": [True, False, False, False, False, True, True],
                    "Main2": [False, False, True, False, True, True, False],
                    "Main3": [True, False, True, True, True, True, False]})

df2 = pd.DataFrame({"Sub1": [False, False, True, False, True, False, True],
                    "Sub2": [False, True, False, False, True, False, True],
                    "Sub3": [True, False, True, False, False, False, True]})

df3 = df1.join(df2)

all_combinations = list(combinations(df3.columns, 2)) + \
                   list(combinations(df3.columns, 3))

for combination in all_combinations:

   df3["".join(list(combination))] = df3[list(combination)].product(axis=1).astype(bool)

df3.drop(labels=["Main1", "Main2", "Main3", "Sub1", "Sub2", "Sub3"], axis=1, inplace=True)

df3

   Main1Main2  Main1Main3  ...  Main3Sub2Sub3  Sub1Sub2Sub3
0       False        True  ...          False         False
1       False       False  ...          False         False
2       False       False  ...          False         False
3       False       False  ...          False         False
4       False       False  ...          False         False
5        True        True  ...          False         False
6       False       False  ...          False          True


Post a Comment for "How To Test All Possible Combinations With True/false Statement In Python?"