#python #pandas #numpy #date #time
#питон #панды #тупица #Дата #время
Вопрос:
У меня есть еще одна проблема с подведением итогов по столбцу (Python — Панды)
У меня есть фрейм данных «новый» с датами с периодами в 5 дней. Столбец «Даты» имеет тип datetime64[ns]. Я пытаюсь отфильтровать фрейм данных по дате, например «все значения между 2021-10-10 и 2021-10-15» или «все значения после 2021-10-14» и т. Д. Что бы я ни пытался, я получаю сообщения об ошибках. Начиная с:
mask = (new['Date'] gt; '2021-10-10') amp; (df['Date'] lt;= '2021-10-15')
Я получаю:
TypeError: 'lt;=' not supported between instances of 'date time.date' and 'str'
После этой ошибки я пытаюсь преобразовать срезы, следуя совету «Дело в том, что вы хотите нарезать, используя строки «2017-07-07», в то время как ваш индекс имеет тип дата, время.дата. Ваши срезы тоже должны быть такого типа. Вы можете сделать это, определив дату начала и дату окончания следующим образом:
import pandas as pd startdate = pd. to_datetime("2017-7-7").date() enddate = pd. to_datetime("2017-7-10").date() df.loc[startdate:enddate]
(Я, конечно, удаляю пробелы) Но теперь я понимаю
TypeError: 'lt;' not supported between instances of 'int' and 'date time.date'
Я просто хочу отсортировать и отфильтровать свой фрейм данных по разным периодам времени. Спасибо за любую помощь
Комментарии:
1. как это связано с «Суммированием десятичных чисел»?
2. Прости, это была ошибка! Я все изменю.
Ответ №1:
Просто чтобы убедиться, что все находится в одном и том же формате, используйте pd.to_datetime()
и используйте infer_datetime_format=True
помогает с форматированием и ускоряет работу функции:
df['Date'] = pd.to_datetime(df['Date'],infer_datetime_format=True) df = df[(df['Date'] gt; pd.to_datetime('2021-10-10')) amp; (df['Date'] lt;= pd.to_datetime('2021-10-15'))]
Комментарии:
1. Спасибо, Селиус, теперь это работает
2. Как я могу теперь установить
startdate = pd. to_datetime("2017-7-7").date()
иenddate = pd. to_datetime("2017-7-10").date()
? Это приводит к ошибке: AttributeError: объект ‘str’ не имеет атрибута ‘дата’3. Используйте .dt.date вместо .date()