Los pandas reindexan y completan los valores faltantes: "El índice debe ser monótono"
Al contestaresta pregunta de stackoverflow, Encontré un comportamiento interesante al usar un método de relleno al reindexar un marco de datos.
Estainforme de error antiguo en pandas dice quedf.reindex(newIndex,method='ffill')
debe ser equivalente adf.reindex(newIndex).ffill()
, pero ese NO es el comportamiento que estoy presenciando
Aquí hay un fragmento de código que ilustra el comportamiento
df = pd.DataFrame({'values': 2}, index=pd.DatetimeIndex(['2016-06-02', '2016-05-04', '2016-06-03']))
newIndex = pd.DatetimeIndex(['2016-05-04', '2016-06-01', '2016-06-02', '2016-06-03', '2016-06-05'])
print(df.reindex(newIndex).ffill())
print(df.reindex(newIndex, method='ffill'))
La primera declaración impresa funciona como se esperaba. El segundo plantea un
ValueError: index must be monotonic increasing or decreasing
¿Que está pasando aqui?
EDITAR: tenga en cuenta que la muestradf
intencionalmente tiene un índice no monotónico. La pregunta se refiere al orden de las operaciones endf.reindex(newIndex, method='ffil')
. Mi expectativa es como el informe de error dice que debería funcionar: primero reindexar con el nuevo índice y luego completar.
Como puede ver, elnewIndex.is_monotonic
esTrue
, y el relleno funciona cuando se llama por separado, pero falla cuando se llama como parámetro parareindex
.