Tengo un marco de datos, df, en el siguiente formato durante varios años (6 horas).
Necesito filtrar las fechas, para cada año, solo para el período del 30 de noviembre al 30 de marzo.
Dates Col1 Col2
11178 2018-10-27 12:00:00 -1 -3
11179 2018-10-27 18:00:00 -2 2
11180 2018-10-28 00:00:00 1 8
11181 2018-10-28 06:00:00 0.1 -0.2
11182 2018-10-28 12:00:00 0.2 -0.1
11183 2018-10-28 18:00:00 0.2 0.03
11184 2018-10-29 00:00:00 0.3 0.07
11185 2018-10-29 06:00:00 0.2 -0.2
11186 2018-10-29 12:00:00 0.05 -0.4
11187 2018-10-29 18:00:00 0.02 -0.5
11188 2018-10-30 00:00:00 0.02 -0.6
11189 2018-10-30 06:00:00 -0.05 -0.7
Puedo eliminar ciertos días o meses a través de
df = df.loc[~(df['Dates'].dt.month.eq(4))]
Lo que quita a April como ejemplo. Parece que no puedo encontrar una manera eficiente de hacer el mismo rango de fechas para cada año, por lo que eventualmente puedo hacer esto iterativamente cambiando el período un día atrás cada vez.
La columna de fecha está actualmente en formato de fecha y hora.
Imagine que desea seleccionar solo datos del 30 de noviembre al 30 de marzo :
luego puede dividir entre meses que selecciona completamente y meses de los cuales solo selecciona unos pocos días:
1.Selecciona completamente: diciembre enero y febrero.
Dcember_Jan_Feb=~df['Dates'].dt.month.between(3,11)
selecciona el 30 de noviembre, y también selecciona del 1 de marzo al 30 de marzo (marzo tiene 31 días)
Nov_30=df['Dates'].dt.month.eq(11)&df['Dates'].dt.day.between(30,30)
March_1_to_30=df['Dates'].dt.month.eq(3)&df['Dates'].dt.day.between(1,30)
Finalmente, aplique su filtro:
df_filtered=df[Dcember_Jan_Feb|Nov_30|March_1_to_30]
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras