фильтрация даты столбца в питоне - PullRequest
0 голосов
/ 05 июня 2018

Я новичок в python и столкнулся со следующей проблемой.У меня есть датафрейм, состоящий из 2 столбцов, один из которых - дата (datetime64 [нс]).Я хочу сохранить все записи за последние 12 месяцев.Мой код следующий:

today=start_time.date()
last_year = today + relativedelta(months = -12)
new_df = df[pd.to_datetime(df.mydate) >= last_year]

при запуске я получаю следующее сообщение: TypeError: тип объекта 2017-06-05

Есть идеи?Мне кажется, что last_year принес мне нужную дату в следующем формате: 2017-06-05

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Вы можете использовать pandas функциональность с datetime объектами.Синтаксис часто более интуитивно понятен и избавляет от необходимости дополнительного импорта.

last_year = pd.to_datetime('today') + pd.DateOffset(years=-1)

new_df = df[pd.to_datetime(df.mydate) >= last_year]

Таким образом, нам нужно будет просмотреть весь ваш код, чтобы быть уверенным в причине вашей ошибки;например, как определяется start_time?

0 голосов
/ 05 июня 2018

Создание объекта дельты времени в пандах для увеличения даты (12 месяцев).Вызовите pandas.Timstamp ('now'), чтобы получить текущую дату.А затем создайте date_range.Вот пример получения ежемесячных данных за 12 месяцев.

import pandas as pd
import datetime
list_1 = [i for i in range(0, 12)]
list_2 = [i for i in range(13, 25)]
list_3 = [i for i in range(26, 38)]

data_frame = pd.DataFrame({'A': list_1, 'B': list_2, 'C':list_3}, pd.date_range(pd.Timestamp('now'), pd.Timestamp('now') + pd.Timedelta           (weeks=53), freq='M'))

Мы создаем временную метку для текущей даты и вводим ее в качестве даты начала.Затем мы создаем временную дельту, чтобы увеличить эту дату на 53 недели (или 52, если хотите), что дает нам данные за 12 месяцев.Ниже вывод:

                              A   B   C
 2018-06-30 05:05:21.335625   0  13  26
 2018-07-31 05:05:21.335625   1  14  27
 2018-08-31 05:05:21.335625   2  15  28
 2018-09-30 05:05:21.335625   3  16  29
 2018-10-31 05:05:21.335625   4  17  30
 2018-11-30 05:05:21.335625   5  18  31
 2018-12-31 05:05:21.335625   6  19  32
 2019-01-31 05:05:21.335625   7  20  33
 2019-02-28 05:05:21.335625   8  21  34
 2019-03-31 05:05:21.335625   9  22  35
 2019-04-30 05:05:21.335625  10  23  36
 2019-05-31 05:05:21.335625  11  24  37
0 голосов
/ 05 июня 2018

Попробуйте

today = datetime.datetime.now()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...