У меня есть датафрейм (df) с разными столбцами.Один из столбцов (col1) выглядит следующим образом:
col1
----
0 1
1 2
2 1-2
3 1,2
4 1-3
5 3
Я использую метод .replace в python / pandas для замены кодов в col1 с помощью кода:
df.col1.replace(to_replace=({'1':'Normal','2':'1-2 more than normal','3':'3-4 more than normal'}), regex=True)
IЯ использую regex=True
, потому что в ячейках есть коды типа 1-2, где значения 1 и 2 имеют разные значения, как указано в словаре.
Выходные данные
col1
--------
0 Normal
1 1-2 more than normal
2 Normal-1-2 more than normal
3 Normal,1-2 more than normal
4 Normal-1-2 more than normal-3 more than normal
5 1-2 more than normal-3 more than normal
Желаемый вывод
col1
--------
0 Normal
1 1-2 more than normal
2 Normal-1-2 more than normal
3 Normal,1-2 more than normal
4 Normal-3-4 more than normal
5 3-4 more than normal
Проблема:
Если я не рассматриваю четвертую строку (1-3), тогда все кодызаменен правильно, за исключением кода 3. Далее я экспериментировал с добавлением строки только с кодом 3, и там я обнаружил, что регулярное выражение сначала заменяет значения для кода 3, а затем в этих значениях заменяет коды значениями из словаря.
Странно, так как я запускаю код / команду регулярного выражения только один раз.
Одним из решений является то, что вместо использования чисел в значениях словаря я мог бы использовать английские слова, например, вместо ввода 1-2 more than normal
, я могу написать one-two more than normal
, и тогда это сработает.Но я хочу сохранить цифры, так как их легко интерпретировать.
Есть предложения?