I have two tables:
df1:
| Branch | Dept | Code |
|---|---|---|
| A | 1 | 10000 |
| A | 2 | 10001 |
| A | 3 | 10003 |
| B | 1 | 20000 |
| B | 2 | 20001 |
| ... | ... | ... |
df2:
| Branch | Dept | Code | ... |
|---|---|---|---|
| A | 1 | ... | |
| B | 2 | ... | |
| A | 3 | ... | |
| B | 1 | ... | |
| A | 2 | ... | |
| ... | ... | ... | ... |
I want to map the Code column in df1 to the Code column in df2. The condition is in each combination of Branch and Dept will have a code, and sometimes, one Code can have multiple Branch-Dept.
I have tried to convert to dictionary for comparison:
foo = {}
for i in df1["Code"].unique():
foo[i] = [{df1["Branch"][j]: df1["Dept"][j]} for j in mapping_table[df1["Code"] == i].index]
bar = dict(zip(df2["Branch"], df2["Dept"]))
My target table (df2) have around 10000 rows, if possible, is there any way to get all values faster.