ho un po 'di dati gerarchico che fondo cui in dati di serie storiche, che sembra qualcosa di simile:ricampionamento All'interno di una Panda MultiIndex
df = pandas.DataFrame(
{'value_a': values_a, 'value_b': values_b},
index=[states, cities, dates])
df.index.names = ['State', 'City', 'Date']
df
value_a value_b
State City Date
Georgia Atlanta 2012-01-01 0 10
2012-01-02 1 11
2012-01-03 2 12
2012-01-04 3 13
Savanna 2012-01-01 4 14
2012-01-02 5 15
2012-01-03 6 16
2012-01-04 7 17
Alabama Mobile 2012-01-01 8 18
2012-01-02 9 19
2012-01-03 10 20
2012-01-04 11 21
Montgomery 2012-01-01 12 22
2012-01-02 13 23
2012-01-03 14 24
2012-01-04 15 25
mi piacerebbe svolgere tempo ricampionamento per città, in modo da qualcosa come
df.resample("2D", how="sum")
sarebbe uscita
value_a value_b
State City Date
Georgia Atlanta 2012-01-01 1 21
2012-01-03 5 25
Savanna 2012-01-01 9 29
2012-01-03 13 33
Alabama Mobile 2012-01-01 17 37
2012-01-03 21 41
Montgomery 2012-01-01 25 45
2012-01-03 29 49
come è, df.resample('2D', how='sum')
mi viene
TypeError: Only valid with DatetimeIndex or PeriodIndex
Va bene, ma avevo una sorta di aspetto che questo lavoro:
>>> df.swaplevel('Date', 'State').resample('2D', how='sum')
TypeError: Only valid with DatetimeIndex or PeriodIndex
a quel punto mi sono davvero a corto di idee ... c'è qualche pila strada e Unstack forza essere in grado di aiutarmi?
Grazie - che certamente fa il lavoro, ma quel groupby ci sta costringendo per ricalcolare le relazioni che abbiamo già stabilito nel nostro indice gerarchico. Non c'è un modo per farlo con i raggruppamenti che abbiamo già costruito nel nostro indice gerarchico, o gli indici gerarchici non sono pensati per essere usati per questo genere di cose? –
Scusa, non ho esperienza sufficiente con Pandas per dire. Quanto sopra è più di una soluzione alternativa di una soluzione. 'df.reset_index' può essere un'operazione lenta e sarebbe molto più bello se si potesse fare senza di essa. – unutbu
Un'alternativa sarebbe quella di disimpilare le colonne di stato e città prima di ricampionare, ma dubito che questo sia più efficiente. –