AttributeError при применении map() для форматирования

Надеюсь, кто-то может посоветовать AttributeError, который я получаю, так как я не уверен, что не так с тем, как написан мой код. Я видел другие сообщения о том, что «объект DataFrame не имеет атрибута», но это не применимо к этому сценарию. Использование функции Python map() для итерации и применения одного и того же форматирования ко всем строкам и указанным столбцам, но проблема заключается в map(). Есть ли альтернативный подход?

Сообщение об ошибке:


  File "Z:\Report\PythonScripts\reporting\templates\lyReload.py", line 70, in getlyReloadTemplate
    myData[col] = round(myData[col]/1000,0).astype(int).map("{:,}".format)

  File "C:\Program Files\Anaconda3\lib\site-packages\pandas\core\generic.py", line 5575, in __getattr__
    return object.__getattribute__(self, name)

AttributeError: 'DataFrame' object has no attribute 'map'

Оригинальный код:

for col in [EPRI,LMTR,LastR]:
           myData[col] = round(myData[col]/1000,0).astype(int).map("{:,}".format) 

Привет @ 2020db9, можете ли вы предоставить код для создания минимального примера данных, который воспроизводит вашу ошибку? Кроме того, вы можете попробовать сократить пример кода, чтобы изолировать ошибку? (т. е. если вы уменьшите его до myData[EPRI].map("{:,}".format), он по-прежнему будет вызывать ту же ошибку?

ASGM 10.05.2022 14:24
.map() работает только для серии Pandas. Вам нужно использовать .applymap() для Pandas Dataframe
Abhyuday Vaish 10.05.2022 14:30

Привет @ASGM, я попытался изолировать ошибку (пробуя по одному столбцу за раз) и все равно столкнулся с тем же сообщением об ошибке.

2020db9 10.05.2022 14:30

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

ASGM 10.05.2022 14:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в дублировании имен столбцов. Таким образом, серия (один столбец) вашего кода возвращает все столбцы с одинаковым именем.

Контрольная работа:

for col in [EPRI,LMTR,LastR]:
    print (myData[col])

Решение: дедуплицированные имена столбцов или удалите повторяющиеся имена столбцов:

myData = myData.loc[:, ~myData.columns.duplicated()]

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

Panagiotis Kanavos 10.05.2022 14:33

@jezrael похоже, вы правы в отношении дублированных столбцов, и я не уверен, почему они дублируются с самого начала. Однако я применил ваш фрагмент до .map(), и он разрешил его.

2020db9 10.05.2022 14:37

Другие вопросы по теме