I have the following two dataframes:
values = pd.DataFrame(data={'val1': ['A', 'C', 'B'],
'val2': [None, 'A', None],
'val3': [None, 'B', 'A']},
index=pd.Series([1, 2, 3]))
desc = pd.DataFrame(data={'value': ['A', 'B', 'C', 'D'],
'description': ['Description for A', 'Description for B', 'Description for C', 'Description for D']},
index=pd.Series([1, 2, 3, 4]))
| val1 | val2 | val3 | |
|---|---|---|---|
| 1 | A | None | None |
| 2 | C | A | B |
| 3 | B | None | A |
| value | description | |
|---|---|---|
| 1 | A | Description for A |
| 2 | B | Description for B |
| 3 | C | Description for C |
| 4 | D | Description for D |
How do I merge the two dataframes I keep the left table, and for each column, I am joining the description from the right table?
| val1 | val2 | val3 | val1_desc | val2_desc | val3_desc | |
|---|---|---|---|---|---|---|
| 1 | A | None | None | Description for A | None | None |
| 2 | C | A | B | Description for C | Description for A | Description for B |
| 3 | B | None | A | Description for B | None | Description for A |
I've tried
pd.merge(values, desc, how='left', left_on=['val1', 'val2', 'val3'], right_on=['value'])
but I get the following error:
ValueError: len(right_on) must equal len(left_on)