pandas - add new column to dataframe from dictionary [duplicate]

Call map and pass the dict, this will perform a lookup and return the associated value for that key:

In [248]:

d = {112: 'en', 113: 'es', 114: 'es', 111: 'en'}
df['D'] = df['U'].map(d)
df
Out[248]:
     U   L   D
0  111  en  en
1  112  en  en
2  112  es  en
3  113  es  es
4  113  ja  es
5  113  zh  es
6  114  es  es

Here is a simpler way that should work well too:

df["D"] = pd.Series(d)

Note: The dict keys need to be in the DataFrame index for this.


I got TypeError: 'dict' object is not callable error for EdChum's solution when I try to use index.map()... And I haven't found a way to get index as Series.

So I found another solution to this problem by creating a Series object from the dict object first.

new_d = pd.Series(d)

And then do the pd.join with the column you like. That may help.