Skip to content Skip to sidebar Skip to footer

Mapping Python Dictionary With Multiple Keys Into Dataframe With Multiple Columns Matching Keys

I have a dictionary that I would like to map onto a current dataframe and create a new column. I have keys in a tuple, which map onto two different columns in my dataframe. dct = {

Solution 1:

You can create a MultiIndex from two series and then map. Data from @ALollz.

df['CountyType'] = df.set_index(['County', 'State']).index.map(dct.get)

print(df)

  County  State CountyType
0      A      1        One
1      A      2       None
2      B      1       None
3      B      2        Two
4      B      3      Three

Solution 2:

If you have the following dictionary with tuples as keys and a DataFrame with columns corresponding to the tuple values

import pandas as pd
dct = {('A', 1): 'One', ('B', 2): 'Two', ('B', 3): 'Three'}
df = pd.DataFrame({'County': ['A', 'A', 'B', 'B', 'B'],
                   'State': [1, 2, 1, 2, 3]})

You can create a Series of the tuples from your df and then just use .map()

df['CountyType'] = pd.Series(list(zip(df.County, df.State))).map(dct)

Results in

  County  State CountyType
0      A      1        One
1      A      2        NaN
2      B      1        NaN
3      B      2        Two
4      B      3      Three

Post a Comment for "Mapping Python Dictionary With Multiple Keys Into Dataframe With Multiple Columns Matching Keys"