'How to replace column values with dictionary keys
I have a df,
 A     B
 one   six
 two   seven
 three level
 five  one
and a dictionary
my_dict={1:"one,two",2:"three,four"}
I want to replace df.A with my_dict keys().
My desired output is,
 A     B
 1     six
 1     seven
 2     level
 five  one
I tried df.A.replace(my_dict,regex=True) but it doesn't work.
Solution 1:[1]
You need dict comprehension for separate each values to keys first:
my_dict={1:"one,two",2:"three,four"}
d = {k: oldk for oldk, oldv in my_dict.items() for k in oldv.split(',')}
print (d)
{'one': 1, 'three': 2, 'four': 2, 'two': 1}
df.A = df.A.replace(my_dict)
Solution 2:[2]
Here is one solution via map / fillna:
d = {v_i: k for k, v in my_dict.items() for v_i in v.split(',')}
df['A'] = df['A'].map(d).fillna(df['A'])
#       A      B
# 0     1    six
# 1     1  seven
# 2     2  level
# 3  five    one
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | |
| Solution 2 | jpp | 
