0

Hello I am mapping databases together and stuck on the following step of our workflow.

I have a main df:

name, id
'tree', 0
'foo', 1
'apple', 2
'table', 3

And another map_df for the codes

ID, id_for_map, Code
0, 0, 'aa'
1, 1, 'ab'
2, 1, 'ac'
3, 2, 'ba'
4, 2, 'bb'
5, 3, 'bb'

I would like to get every code in a list as a column of the main df after the id matching:

name, id, code
'tree', 0, ['aa']
'foo', 1,  ['ab','ac']
'apple', 2, ['ba','bb']
'table', 3, ['bb']

I tried to use temp dataframes, with a lot of inefficent work, but still couldn't figure it out.

Thank you for your help in advance!

1 Answer 1

3

You can try

df1['code'] = df1['id'].map(df2.groupby('id_for_map')['Code'].agg(list))
print(df1)

      name  id          code
0   'tree'   0        ['aa']
1    'foo'   1  ['ab', 'ac']
2  'apple'   2  ['ba', 'bb']
3  'table'   3        ['bb']
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.