Pandas. Замена символа в колонке

Люди опытные, помогите разобраться. Из яндекс метрики приходит колонка goals_id. В ней данные с лишними символами вот в таком виде:

goals_id

Я эту колонку чищу, что бы оставались одни числа:

'df['goals_id']=df['goals_id'].replace({'[':'', ']':''})'

Вроде бы задача то элементарная, НО... Один раз меняет. Все квадратные скобки удаляются. На следующий день использую этот же код с новым df, не меняет. Выдаёт df без изменений.

Уже голову сломал, как так может быть, что код который еще вчера работал, сегодня уже не исполняет действия с новым датафреймом.

Кто-нибудь с таким сталкивался?


Ответы (2 шт):

Автор решения: splash58

Чтобы заменить не всё значение целиком, а символы в текстовой колонке, надо использовать не Series.replace, а Series.str.replace . Поскольку Pandas меняет дефолтное значение с regex=True на False, лучше явно указывать значение. В вашем случае можно сделать одно из двух

df['goals_id'].str.replace('[', '', regex=False).replace(']', '', regex=False)

df['goals_id'].str.replace('\[|\]', '', regex=True)

а вот убрать все "пустые списки" можно и при помощи Series.replace

 df['goals_id'].replace('[]', '', regex=False)
→ Ссылка
Автор решения: Алексей Р

Это можно сделать также с помощью .str.strip()

df.goals_id = df.goals_id.str.strip('[]')
→ Ссылка