У меня следующая проблема, у меня есть два отдельных скрипта Python. Первый преобразует CSV-файл в новый формат (удаляя определенные столбцы и удаляя знаки доллара)

Отдельные сценарии считывают все преобразованные файлы CSV и создают из них один большой сценарий, группируя данные по определенным ключам.

Все это работает достаточно хорошо, за исключением того, что я постоянно сталкиваюсь со следующей проблемой.

Один из столбцов в обоих файлах Money Out иногда содержит значения, начинающиеся с "-" (-235,93). Я хочу удалить этот символ из файла.

Я поместил следующий код в оба сценария, но не могу удалить символ. Данные иногда являются числовыми, а иногда и строковыми. Я думал, что объединение его со строкой и использование метода «заменить» решит проблему, но этого не произошло. Я также использовал метод build in pandas, но безрезультатно.

df['Money Out'] = df['Money Out'].astype(str)
df['Money Out'] = df['Money Out'].replace('-', '')
df['Money Out'].replace('-', '', inplace=True)

Кто-нибудь знает, что я делаю не так?

0
Jasper 31 Дек 2017 в 17:38

2 ответа

Лучший ответ

Ваш код:

df['Money Out'].replace('-', '', inplace=True)

Использует Series.replace, который другое дело (заменяет точное соответствие столбца или регулярное выражение значением), чем Series.str.replace (более традиционная замена существующей подстроки на другую), вы можете использовать:

df['Money Out'] = df['Money Out'].str.replace('-', '')

Чтобы убрать дефис из текста.

1
Jon Clements 31 Дек 2017 в 14:47

Попробуй сделать это

df['Money Out'] = df.apply(lambda r: ("%s"%(r['Money Out'] or "0.0")).replace("-",""), axis=1)
1
Abdelmajid ELHAMDAOUI 31 Дек 2017 в 14:45