Я пытаюсь перебрать форматирование to_datetime по нескольким столбцам и создать новый столбец с префиксом. Кажется, у меня проблема с заменой заголовка столбца в команде to_datetime
. Вручную команда ниже работает: -
pipeline['pyCreated_Date'] = pd.to_datetime(pipeline.Created_Date, errors='raise')
Но я получаю Attribute Error: 'DataFrame' object has no attribute 'dh'
, когда пытаюсь выполнить итерацию. Я искал ответы и пробовал различные попытки, основанные на переименовании столбцов фрейма данных pandas с использованием цикла for , но мне, похоже, не хватает такой основной информации. Вот мой самый последний код: -
date_header = ['Created_Date', 'End_Date', 'Expected_Book_Date', 'Last_Modified_Date',
'Start_Date', 'Workspace_Won/Lost_Date', 'pyCreated_Date']
for dh in date_header:
pipeline['py' + dh.format()] = pd.to_datetime(
pipeline.dh.format(), errors='raise')
Похоже, dh
не распознается, так как ошибка гласит:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-121-d00bf0a5a7fd> in <module>()
3 date_header = ['Created_Date', 'End_Date', 'Expected_Book_Date', 'Last_Modified_Date', 'Start_Date', 'Workspace_Won/Lost_Date']
4 for dh in date_header:
----> 5 pipeline['py' + dh.format()] = pd.to_datetime(pipeline.dh.format(), errors='raise')
/usr/local/lib/python3.6/site-packages/pandas/core/generic.py in __getattr__(self, name)
4370 if self._info_axis._can_hold_identifiers_and_holds_name(name):
4371 return self[name]
-> 4372 return object.__getattribute__(self, name)
4373
4374 def __setattr__(self, name, value):
AttributeError: 'DataFrame' object has no attribute 'dh'
Каков правильный синтаксис для достижения этой цели, пожалуйста? Извиняюсь, если это ошибка новичка, но я ценю вашу поддержку.
Большое спасибо
ОБНОВЛЕНО после доброй помощи ALollz!
Вот что наконец сработало
for col_name in date_header:
pipeline['py'+ col_name.format()] = pd.to_datetime(pipeline[col_name], errors='coerce')
print(f"{pipeline['py'+ col_name.format()].value_counts(dropna=False)}")