Issue
From the following dataframe (df
):
|------------+--------------------+-------------|
| child_code | child_name | parent_code |
|------------+--------------------+-------------|
| 900 | World | 0 |
| 920 | South-Eastern Asia | 900 |
| 702 | Singapore | 920 |
|------------+--------------------+-------------|
I would like to produce this dataframe:
|------------+--------------------+-------------+--------------------|
| child_code | child_name | parent_code | parent_name |
|------------+--------------------+-------------+--------------------|
| 900 | World | 0 | |
| 920 | South-Eastern Asia | 900 | World |
| 702 | Singapore | 920 | South-Eastern Asia |
|------------+--------------------+-------------+--------------------|```
How could I make the equivalent of an MS Excel `vlookup` to produce the `parent_name` column?
Solution
You can use Series.map
:
import pandas as pd
import numpy as np
data = {'child_name': {0: 'World', 1: 'South-Eastern Asia', 2: 'Singapore'},
'child_code': {0: 900, 1: 920, 2: 702},
'parent_code': {0: 0, 1: 900, 2: 920}}
df = pd.DataFrame(data)
df['parent_name'] = df['parent_code'].map(df.set_index('child_code')['child_name'])
df
child_name child_code parent_code parent_name
0 World 900 0 NaN
1 South-Eastern Asia 920 900 World
2 Singapore 702 920 South-Eastern Asia
Answered By - ouroboros1
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.