Вы можете создать серию из ваших пар code
- value
и использовать их для map
:
my_map = df[df['value'].notnull()].set_index('code')['value'].drop_duplicates()
df['value'] = df['code'].map(my_map)
>>> df
code value
0 1 red
1 2 blue
2 3 yellow
3 1 red
4 4 pink
5 4 pink
6 2 blue
Просто чтобы увидеть, что происходит, вы передаете следующую серию map
:
>>> my_map
code
1 red
2 blue
3 yellow
4 pink
Name: value, dtype: object
Так и сказано: «Где вы найдете 1
, дайте значение red
, где вы найдете 2
, дайте blue
...»