I have two dataframes
df1
| Area-ID-Series | Area-ID | MODE |
|---|---|---|
| BSD-1-1800 | BSD-1 | VM |
| BSD-2-1800 | BSD-2 | VM |
| BSD-3-1800 | BSD-3 | VM |
| BSE-1-2100 | BSE-1 | XM |
| BSE-1-900 | BSE-1 | VM |
| BSE-2-2100 | BSE-2 | XM |
| BSE-2-900 | BSE-2 | VM |
| BSE-3-2100 | BSE-3 | XM |
| BSE-3-900 | BSE-3 | VM |
| SMR-1-1800 | SMR-1 | VM |
df2
| Area-ID | 900 | 1800 | 2100 |
|---|---|---|---|
| BSD-1 | |||
| BSD-2 | |||
| BSD-3 | |||
| BSE-1 | |||
| BSE-2 | |||
| BSE-3 | |||
| SMR-1 |
df2 has a key based on df1 but without the "Series", because the "Series" transformed into columns.
I want to get MODE value for each series based on Area-ID, so my desired output is like this
df2
| Area-ID | 900 | 1800 | 2100 |
|---|---|---|---|
| BSD-1 | - | VM | - |
| BSD-2 | - | VM | - |
| BSD-3 | - | VM | - |
| BSE-1 | VM | - | XM |
| BSE-2 | VM | - | XM |
| BSE-3 | VM | - | XM |
| SMR-1 | - | VM | - |
I have tried this code but still no idea how it should be done
df_result = pd.merge(df2,
df1[['Area-ID', 'MODE']],
on= 'Area-ID',
how='left')
I have tried to do this in excel with df1 as "city" the formula look like this
900 series column
=IFNA(VLOOKUP(A2&"-"&$B$1,city!A:C,3,0),"-")
1800 series column
=IFNA(VLOOKUP(A2&"-"&$C$1,city!A:C,3,0),"-")
2100 series column
=IFNA(VLOOKUP(A2&"-"&$D$1,city!A:C,3,0),"-")
it worked, but it takes a lot of time because my data is huge so I try to do it with python instead