Каждый последующий вызов map
заменяет все, что не находится в преобразователе, на NaN.
Попробуйте создать один словарь и передать его.
m = {'North' : north, 'South' : south, 'Center' : center, 'Islands', islands}
d = {v2 : k for k, v in m.items() for v2 in v}
df['Reg_cat'] = df['Reg_cat'].map(d)
Примечание:
- тебе не нужно
reg
- вам не нужно
cats
- тебе не нужно
ncats
- вам также (что неудивительно) не нужны
n
, независимо от того, что равно