Удаление обратной косой черты из значений в кадре данных Pandas

1

У меня есть кадр данных Pandas, который содержит обратную косую черту. Я хочу удалить эти обратные косые черты, но я не могу заставить функцию замены работать. Вот что я делаю:

df=pd.DataFrame(data={'col1':['a\\b','ab'], 'col2':['c','cd\\']})
df.replace(to_replace='\\', value='', regex=True, inplace=True)

Когда я запускаю это, появляется сообщение об ошибке:

error: bad escape (end of pattern) at position 0

Если я удалю "regex = True", я не получу ошибку, но ничего не заменит.

Как удалить обратную косую черту?

  • 1
    Используйте df.replace(r'\\','', regex=True) или df.apply(lambda x: x.str.replace('\\',''))
  • 0
    Итак, пример слева - тот же код, который я реализовал, за исключением того, что я указал имена параметров, а не просто полагался на их местоположение, поэтому я попробую, но ожидаю ту же ошибку. Лямбда-выражение может работать для меня (я обязательно попробую), но я думаю, что это может быть ошибкой в реализации функции замены. Кажется, проблема в том, что у меня есть разница между тем, что компилятор Python может принимать как допустимый код, и тем, что функция replace может обрабатывать как допустимые значения после их передачи.
Показать ещё 6 комментариев
Теги:
pandas
dataframe
escaping
replace

2 ответа

0
Лучший ответ

Вы можете replace

df.replace(to_replace= r'\\', value= '', regex=True)
  • 1
    Спасибо, Абхи. С флагом строкового литерала («r» перед «\\») это работает отлично!
  • 0
    @ Астурт Рад помочь. :)
0

Я предпочитаю использовать API-интерфейс строки для каждого столбца.

for col in df:
    df[col] = df[col].str.replace(r'\\','')
  • 0
    Спасибо Джеймс, но это само по себе не очень хорошее решение, так как у меня есть несколько столбцов, из которых мне нужно удалить обратную косую черту. На самом деле, если вы посмотрите на ответ Абхи (который ответил раньше вас), вы увидите, что он уже предложил строковый API, но поместил его в лямбда-функцию, чтобы она лучше соответствовала критериям проблемы, описанной в моем исходном вопросе. , Тем не менее, его решение не работает против моего фактического набора данных, так как в нем есть нестроковые столбцы. Поэтому мне, возможно, просто придется использовать ваше решение и работать с каждым столбцом в отдельности.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню