The idea is to make a pandas data frame with the following two dictionaries:
d1={('A','B'):{('C','D'),('E','F')}, ('X','Z'):{('R','T')}} d2={('A','B'):{('J','K')}}
The keys are IDs Desired data frame output based on the matching keys:
Matched ID | Value d1 | Value d2 ('A','B') | ('C','D') | ('J','K') ('A','B') | ('E','F') | ('J','K')
The ID (‘X’, ‘Z’) only exists in d1 but not d2 so it is not included in the desired output.
Advertisement
Answer
Try:
df1 = pd.DataFrame.from_dict(d1, orient='index').unstack().droplevel(0).rename('B') df2 = pd.DataFrame.from_dict(d2, orient='index').unstack().droplevel(0).rename('C') df = pd.merge(df1, df2, left_index=True, right_index=True, how='inner') .rename_axis('A').reset_index() print(df) # Output A B C 0 (A, B) (C, D) (J, K) 1 (A, B) (E, F) (J, K)