Как преобразовать строковый столбец dataframe в datetime в формате с указанием года и недели? - PullRequest
1 голос
/ 30 марта 2019

Пример данных:

Week      Price
2011-31    1.58
2011-32    1.9
2011-33    1.9
2011-34    1.9

У меня есть такой же кадр данных, и я хочу преобразовать тип столбца «Неделя» из строки в дату и время.

Мой код:

data['Date_Time'] = pd.to_datetime(data.Week, format='%Y-%W')
data = data.drop(['Week'], axis=1)
data.index = data.Date_Time

Ошибка:

«Ошибка значения: невозможно использовать«% W »или«% U »без дня и года»

Ответы [ 2 ]

2 голосов
/ 30 марта 2019

%W использует понедельник как первый день недели.

import datetime
week = '2011-31'
date=datetime.datetime.strptime(week + '-1', "%Y-%W-%w")
print(date)

Смотрите это: https://repl.it/@ibrahimth/EvergreenNutritiousEmbeds

1 голос
/ 30 марта 2019

Вам необходимо указать день недели с помощью параметра %w:

data['Date_Time'] = pd.to_datetime(data.Week + '0', format='%Y-%W%w')
print (data)
      Week  Price  Date_Time
0  2011-31   1.58 2011-08-07
1  2011-32   1.90 2011-08-14
2  2011-33   1.90 2011-08-21
3  2011-34   1.90 2011-08-28

Для DatetimeIndex используйте DataFrame.pop с rename:

data.index = pd.to_datetime(data.pop('Week') + '0', format='%Y-%W%w').rename('Date')
print (data)
            Price
Date             
2011-08-07   1.58
2011-08-14   1.90
2011-08-21   1.90
2011-08-28   1.90
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...