Предполагая, что у меня следующий набор данных
lst = ['u', 'v', 'w', 'x', 'y']
lst_rev = list(reversed(lst))
dct = dict(zip(lst, lst_rev))
df = pd.DataFrame({'A':['a', 'b', 'a', 'c', 'a'],
'B':lst},
dtype='category')
Теперь я хочу replace
значение столбца B в df на dct
Я знаю, что могу сделать
df.B.map(dct).fillna(df.B)
, чтобы получить ожидаемый результат, но когда я тестирую с replace
(что является более простым основанием для моего мышления), я потерпел неудачу
Out out showкак показано ниже
df.B.replace(dct)
Out[132]:
0 u
1 v
2 w
3 v
4 u
Name: B, dtype: object
Что отличается от
df.B.map(dct).fillna(df.B)
Out[133]:
0 y
1 x
2 w
3 v
4 u
Name: B, dtype: object
Я могу думать, что причина, почему это происходит, Но почему?
0 u --> change to y then change to u
1 v --> change to x then change to v
2 w
3 v
4 u
Ценю вашу помощь.