Filtro por fechas en pandas
Publicado por Rosario (13 intervenciones) el 18/01/2017 20:26:13
Hola a todos. Mi problema es el siguiente. Tengo un proyecto el cual me conecto con sql a través de pandas.
Esto bien. Cogo mi select perfectamente. Pero cuando quiero trabajar con el dataframe para hacer nuevos filtros con los registros dados no se como hacerlo.
Aquí os pongo una imagen de mi programa. El resultado que me ha ido dando según el código que he ido poniendo y el fallo que tengo a la hora de hacer un filtro por el campo fecha. Os pongo el tipo de dato que es cada uno de los campos para que lo veais.
Este es el código del proyecto:
A ver si alguien me puede ayudar.
Gracias de antemano.
Charo.
Esto bien. Cogo mi select perfectamente. Pero cuando quiero trabajar con el dataframe para hacer nuevos filtros con los registros dados no se como hacerlo.
Aquí os pongo una imagen de mi programa. El resultado que me ha ido dando según el código que he ido poniendo y el fallo que tengo a la hora de hacer un filtro por el campo fecha. Os pongo el tipo de dato que es cada uno de los campos para que lo veais.
Este es el código del proyecto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pyodbc
import pandas.io.sql as pd
import datetime as dt
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=MSI-PORTATIL\SQL2014;DATABASE=OpusCentral;UID=sa;PWD=1')
sql = "Select top 10 IdActivo,Fecha,Open1 from DATA WHERE IdActivo IN (1,2,3) ORDER BY IdActivo,Fecha desc"
df = pd.read_sql(sql,conn)
print(df.applymap(type))# Me dice que tipo de dato es cada campo y he comprobado que el campo Fecha= class 'pandas.tslib.Timestamp'
print('************')
data_fecha = df.set_index('Fecha') # Pongo el campo Fecha como índice del array
fecha_1 = dt.datetime(2016,10,19)
fecha_2 = dt.datetime(2016,10,26)
data_fecha.head(10) # Voy a mostrar el máximo de los registros elegidos en mi Select
print(data_fecha); print('')
print('Mostrar los registros con el filtro nuevo'); print('')
print(data_fecha.loc[fecha_1:fecha_2])# Aquí se supone que hago el filtro del intervalo de las dos fechas elegidas por mi pero no hace nada.
conn.close()
A ver si alguien me puede ayudar.
Gracias de antemano.
Charo.
Valora esta pregunta
0