Передаваемый аргумент имеет значение float и datetime
При попытке извлечения из даты в формате datetime года и числа недели возникает ошибка. Пример DataFrame:
df.head()
| ID | date_from | date_to |
|----|------------|------------|
| 1 | 2019-10-29 | 2020-05-04 |
| 2 | 2019-01-29 | 2020-01-01 |
| 3 | 2019-01-29 | 2020-04-15 |
При выполнении кода:
df['date_from'].apply(lambda x: dt.datetime.strftime(x,'%Y-%W'))
возникает ошибка:
TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'float'
В то же время:
df['date_from'].apply(lambda x: dt.datetime.fromtimestamp(x))
выдаёт:
TypeError: an integer is required (got type datetime.date)
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Если я правильно понял вопрос:
In [47]: df["date_from"].dt.strftime("%Y-%W")
Out[47]:
0 2019-43
1 2019-04
2 2019-04
Name: date_from, dtype: object
Для того, чтобы иметь возможность воспользоваться .dt... соответствующий столбец должен иметь тип данных datetime64. Если это строка, то сначала надо преобразовать данный столбец в datetime64:
df["date_from"] = pd.to_datetime(df["date_from"], errors="coerce")