Pandas .replace() с несколькими сопоставлениями «многие к одному»Python

Программы на Python
Anonymous
Pandas .replace() с несколькими сопоставлениями «многие к одному»

Сообщение Anonymous »

У меня есть столбец pandas с несколькими строками. Я хочу сгруппировать похожие строки и заменить их категорией. В моем реальном примере у меня есть 6 разных строк, и я хотел заменить их тремя разными строками для их категорий.
Я нашел этот ответ о том, как сопоставить множество значений с 1, используя функцию replace(), поэтому я попытался расширить некоторые ответы, чтобы выполнить сопоставление многих к 1 для нескольких групп, однако не все мои значения были правильно изменены, и я не знаю, почему.
Пример:

Код: Выделить всё

df1 = pd.DataFrame({'col1':['foo', 'foo too', 'bar', 'BAR', 'bar ii']})
col1
0   foo
1   foo too
2   bar
3   BAR
4   bar ii
Из одного из ответов видно, что можно использовать '|' чтобы разделить разные ключевые параметры, если вы использовали регулярное выражение, поэтому я сделал это, как показано ниже:

Код: Выделить всё

df1['col1'].replace({'foo|foo too' : 'Foo',
'bar|BAR|bar ii' : 'Bar'}, regex=True)
При этом преобразуется большая часть моих строк, но не все:

Код: Выделить всё

    col1
0   Foo
1   Foo too
2   Bar
3   Bar
4   Bar ii
Из этого примера я могу предположить, что что-то связано с пробелами? хотя в моем реальном примере некоторые из моих строк с пробелами были заменены правильно, поэтому я не уверен. Любая помощь в том, почему это не работает/как я могу достичь того, чего мне нужно, будет оценена по достоинству

Подробнее здесь: https://stackoverflow.com/questions/785 ... e-mappings

Вернуться в «Python»