Я пытаюсь реструктурировать большой DataFrame следующей формы как MultiIndex:
date store_nbr item_nbr units snowfall preciptotal event
0 2012-01-01 1 1 0 0.0 0.0 0.0
1 2012-01-01 1 2 0 0.0 0.0 0.0
2 2012-01-01 1 3 0 0.0 0.0 0.0
3 2012-01-01 1 4 0 0.0 0.0 0.0
4 2012-01-01 1 5 0 0.0 0.0 0.0
Я хочу группировать по store_nbr
(1-45), в пределах каждой store_nbr
группы item_nbr
(1-111), а затем для соответствующей пары индексов (например, store_nbr
= 12, item_nbr
= 109) отображать строки в хронологическом порядке, поэтому что упорядоченные строки будут выглядеть, например:
store_nbr=12, item_nbr=109: date=2014-02-06, units=0, snowfall=...
date=2014-02-07, units=0, snowfall=...
date=2014-02-08, units=0, snowfall=...
... ...
store_nbr=12, item_nbr=110: date=2014-02-06, units=0, snowfall=...
date=2014-02-07, units=1, snowfall=...
date=2014-02-08, units=1, snowfall=...
...
Похоже, какая-то комбинация groupby
и set_index
может быть полезной здесь, но я застрял после следующей строки:
grouped = stores.set_index(['store_nbr', 'item_nbr'])
Это создает следующий MultiIndex:
date units snowfall preciptotal event
store_nbr item_nbr
1 1 2012-01-01 0 0.0 0.0 0.0
2 2012-01-01 0 0.0 0.0 0.0
3 2012-01-01 0 0.0 0.0 0.0
4 2012-01-01 0 0.0 0.0 0.0
5 2012-01-01 0 0.0 0.0 0.0
У кого-нибудь есть предложения отсюда? Есть ли простой способ сделать это, манипулируя групповыми объектами?
Вы можете отсортировать строки с помощью:
df.sort_values(by='date')