Помогите найти ошибку в регулярном выражении
Имеется датафрейм "mos1" содержащий столбец "Площадь" где данные записаны в формате 64.1/23/20. (Name: Площадь, Length: 37693, dtype: int64). Необходимо заменить значения в столбце на цифру общей площади из имеющихся данных. Я пробую вариант:
mos1["Площадь"] = mos1["Площадь"](re.split(r"\d*{ ,1}"))
Выдает ошибку: split() missing 1 required positional argument: 'string'. Пробую
for i in (mos1["Площадь"]):
sarg= i.split(r"\d*{ ,1}")
mos1['Площадь'] = round(mos1['Площадь'](i==sarg))
Выдает ошибку: 'Series' object is not callable Помогите разобраться, что я делаю неправильно. Разобраться важнее, чем просто поправить. Задание учебное.
Ответы (1 шт):
В Python синтаксическая конструкция object(...) - обозначает вызов функции с наименованием object. Об этом вам и сообщает интерпретатор:
'Series' object is not callable
Т.е. конструкция:
mos1["Площадь"](re.split(r"\d*{ ,1}"))
будет интерпретирована как вызов функции mos1["Площадь"] с параметром re.split(r"\d*{ ,1}"). Но mos1["Площадь"] - является объектом типа pandas.Series, а не функцией.
Но главная проблема в том, что вы неправильно используете инструментарий Pandas. В Pandas есть свои векторизированные методы для обработки строковых объектов при помощи регулярных выражений.
Т.е. у вас классическая "Ошибка микроскопа-молотка" или "Ошибка XY" - попробуйте описать вашу задачу более широко и более понятным языком.
NOTE: в будущем советую всегда приводить в вопросе воспроизводимый пример входных данных (в виде текста / CSV / Python кода или ссылки на файл) и то что вы ожидаете получить на выходе. Также советую ознакомиться: Как наиболее эффективно задать вопрос, связанный с обработкой и/или анализом данных (например: по Pandas / Numpy / SciPy / SciKit Learn / SQL)