Python - Filtro por fechas en pandas

 
Vista:
sin imagen de perfil

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.

error

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Filtro por fechas en pandas

Publicado por Jair Flores (1 intervención) el 26/04/2020 22:49:06
al momento de filtrar (en loc) las variables fecha_1 y fecha_2 no te olvides de tratarlos como strings:
1
print(data_fecha.loc[str(fecha_1): str(fecha_2)])
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar