example - python pandas dataframe index
Filtrar pandas DataFrames en fechas (5)
La respuesta anterior no es correcta en mi experiencia, no se puede pasar una cadena simple, debe ser un objeto de fecha y hora. Asi que:
import datetime
df.ix[datetime.date(year=2014,month=1,day=1):datetime.date(year=2014,month=2,day=1)]
Tengo un Panda DataFrame con una columna ''fecha''. Ahora necesito filtrar todas las filas en el DataFrame que tengan fechas fuera de los próximos dos meses. Esencialmente, solo necesito retener las filas que están dentro de los próximos dos meses.
¿Cuál es la mejor manera de lograr esto?
Si las fechas están en el índice, simplemente:
df[''20160101'':''20160301'']
Si su columna de fecha y hora tiene el tipo de fecha y hora de Pandas (por ejemplo, datetime64[ns]
), para el filtrado adecuado necesita el objeto pd.Timestamp , por ejemplo:
from datetime import date
import pandas as pd
value_to_check = pd.Timestamp(date.today().year, 1, 1)
filter_mask = df[''date_column''] < value_to_check
filtered_df = df[filter_mask]
Y si sus fechas están estandarizadas mediante la importación de paquetes de fecha y hora, simplemente puede usar:
df[(df[''date'']>datetime.date(2016,1,1)) & (df[''date'']<datetime.date(2016,3,1))]
Para estandarizar su cadena de fecha usando el paquete de fecha y hora, puede usar esta función:
import datetime
datetime.datetime.strptime
Si es el índice, debe usar el selector .ix
o .loc
.
Por ejemplo:
df.ix[''2014-01-01'':''2014-02-01'']
Vea los detalles aquí http://pandas.pydata.org/pandas-docs/stable/dsintro.html#indexing-selection
Supongo que es inteligente leer bastante sobre los pandas antes de comenzar, ya que es una biblioteca muy poderosa. De lo contrario, será difícil lograr algo significativo.
ACTUALIZAR:
Si la columna no es el índice, tiene dos opciones:
- Conviértalo en el índice (temporal o permanentemente si se trata de datos de series temporales)
-
df[(df[''date''] > ''2013-01-01'') & (df[''date''] < ''2013-02-01'')]
Vea here para la explicación general