Desidero specificare resample a DataFrame con un multiindice che contiene sia una colonna datetime che un'altra chiave. Il dataframe assomiglia:Ricampionamento di un DataFrame con più indici
import pandas as pd
from StringIO import StringIO
csv = StringIO("""ID,NAME,DATE,VAR1
1,a,03-JAN-2013,69
1,a,04-JAN-2013,77
1,a,05-JAN-2013,75
2,b,03-JAN-2013,69
2,b,04-JAN-2013,75
2,b,05-JAN-2013,72""")
df = pd.read_csv(csv, index_col=['DATE', 'ID'], parse_dates=['DATE'])
df.columns.name = 'Params'
Perché ricampionamento è consentito solo su DataTime indici, ho pensato unstacking l'altra colonna di indice sarebbe di aiuto. E in effetti lo fa, ma non posso impilarlo di nuovo in seguito.
print df.unstack('ID').resample('W-THU')
Params VAR1
ID 1 2
DATE
2013-01-03 69 69.0
2013-01-10 76 73.5
Ma poi stacking 'ID' risultati ancora una volta in un indice-error:
print df.unstack('ID').resample('W-THU').stack('ID')
IndexError: index 0 is out of bounds for axis 0 with size 0
Stranamente, posso impilare l'altro livello di colonna sia con:
print df.unstack('ID').resample('W-THU').stack(0)
e
print df.unstack('ID').resample('W-THU').stack('Params')
L'errore indice si verifica anche se riordino (scambia) entrambi i livelli di colonna. Qualcuno sa come superare questo problema?
Ho postato questo come [un problema su github] (https://github.com/pydata/pandas/issues/3170). –
Grazie, non ero sicuro se sarebbe stato un problema o solo me. Ma la risposta sotto mostra chiaramente che lo è. –
Questo è [riparato] (https://github.com/pydata/pandas/pull/3225) nel master (quindi lo vedrai in 0.11). –