2015-06-22 2 views
0

У меня есть большая база данных, и я ищу, чтобы читать только последнюю неделю для моего кода на Python.Выбор данных с прошлой недели в Python

Моя первая проблема заключается в том, что столбец с полученной датой и временем не в формате datetime в пандах. Мой вход (колонка 15) выглядит следующим образом:

recvd_dttm 
1/1/2015 5:18:32 AM 
1/1/2015 6:48:23 AM 
1/1/2015 13:49:12 PM 

От функциональности/Дата Время Series в библиотеке панд Я смотрю на основании моего кода прочь «Недели()» функции, показанной в примере ниже:

In [87]: d 
Out[87]: datetime.datetime(2008, 8, 18, 9, 0) 

In [88]: d - Week() 
Out[88]: Timestamp('2008-08-11 09:00:00') 

Я попытался приказывать дата истечения так:

df =pd.read_csv('MYDATA.csv') 
orderdate = datetime.datetime.strptime(df['recvd_dttm'], '%m/%d/%Y').strftime('%Y %m %d') 

однако я получаю эту ошибку

TypeError: must be string, not Series 

Кто-нибудь знает более простой способ сделать это или как исправить эту ошибку?

Редактировать: Даты не обязательно в порядке. И иногда в базе данных есть ошибочная ошибка, например, дата, которая составляет 9/03/2015 (в будущем), кто-то ошибся. Мне нужно уметь игнорировать их.

ответ

1
import datetime as dt 

# convert strings to datetimes 
df['recvd_dttm'] = pd.to_datetime(df['recvd_dttm']) 

# get first and last datetime for final week of data 
range_max = df['recvd_dttm'].max() 
range_min = range_max - dt.timedelta(days=7) 

# take slice with final week of data 
sliced_df = df[(df['recvd_dttm'] >= range_min) & 
       (df['recvd_dttm'] <= range_max)] 
+0

Это сработало и легко следовать. Благодаря! – jenryb

+0

Добро пожаловать. – bernie

+0

Быстрый вопрос о добавлении, у меня есть дата в будущем (написано случайно, я уверен), который заворачивает мой код. Как игнорировать даты не в диапазоне? – jenryb

0

Вы можете перебирать даты, чтобы преобразовать, сделав список понимание

orderdate = [datetime.datetime.strptime(ttm, '%m/%d/%Y').strftime('%Y %m %d') for ttm in list(df['recvd_dttm'])] 
+0

ах ха! Я думаю, что это работает. Единственная проблема заключается в том, что делать с переменной времени. Я получаю «ValueError: неконвертированные данные остаются: 5:18». Меня не волнует время, мне больше нужно читать последнюю неделю данных. – jenryb

Смежные вопросы