Say I have the following two dataframes:
df1 = pd.DataFrame([('p1','val1', 'para1', 'extra1'),
('p2','val2', 'para2', 'extra2'),
('p3','val3', 'para3', 'extra3'),
('p4','val4', 'para4', 'extra4'),
('p1','val3', 'para13', 'extra1'),
('p2','val1', 'para21', 'extra2'),
('p3','val1', 'para31', 'extra3'),
('p4','val2', 'para42', 'extra4')], columns=['col1', 'col2', 'col3', 'col4'])
df2 = pd.DataFrame([('p1','val1'),
('p2','val2'),
('p4','val2'),
('p2','val1'),
('p1','val3')], columns=['c1', 'c2'])
I want to add a column c3 to df2, by matching both values in column c1 to col1 and values in column c2 to col2, returning values in column col3 of df1.
Here is the expected output:
c1 c2 c3
0 p1 val1 para1
1 p2 val2 para2
2 p4 val2 para42
3 p2 val1 para21
4 p1 val3 para13
Assuming that any combination of (c1, c2) can be found in (col1, col2), how should I implement this neatly?