Подтвердить что ты не робот

Замените все вхождения строки в фреймворк pandas (Python)

У меня есть pandas датафрейм с примерно 20 столбцами.

Можно заменить все вхождения строки (здесь новой строки), вручную записывая все имена столбцов:

df['columnname1'] = df['columnname1'].str.replace("\n","<br>")
df['columnname2'] = df['columnname2'].str.replace("\n","<br>")
df['columnname3'] = df['columnname3'].str.replace("\n","<br>")
...
df['columnname20'] = df['columnname20'].str.replace("\n","<br>")

Это, к сожалению, не работает:

df = df.replace("\n","<br>")

Есть ли другое, более элегантное решение?

4b9b3361

Ответ 1

Вы можете использовать replace и передать строки для поиска/замены в качестве словарных клавиш/элементов:

df.replace({'\n': '<br>'}, regex=True)

Например:

>>> df = pd.DataFrame({'a': ['1\n', '2\n', '3'], 'b': ['4\n', '5', '6\n']})
>>> df
   a    b
0  1\n  4\n
1  2\n  5
2  3    6\n

>>> df.replace({'\n': '<br>'}, regex=True)
   a      b
0  1<br>  4<br>
1  2<br>  5
2  3      6<br>

Ответ 2

Кажется, что Pandas изменил свой API, чтобы избежать двусмысленности при работе с регулярным выражением. Теперь вы должны использовать:

df.replace({'\n': '<br>'}, regex=True)

Например:

>>> df = pd.DataFrame({'a': ['1\n', '2\n', '3'], 'b': ['4\n', '5', '6\n']})
>>> df
   a    b
0  1\n  4\n
1  2\n  5
2  3    6\n

>>> df.replace({'\n': '<br>'}, regex=True)
   a      b
0  1<br>  4<br>
1  2<br>  5
2  3      6<br>

Ответ 3

Это приведет к удалению всех строк новой строки и ненужных пробелов. Вы можете отредактировать '.join, чтобы указать заменяющий символ

    df['columnname'] = [''.join(c.split()) for c in df['columnname'].astype(str)]