Подстановка переменных при использовании Dataframes - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь перебрать форматирование 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)}")
...