Pandas DataFrame -> GroupBy -> MultiIndex Process - PullRequest
       19

Pandas DataFrame -> GroupBy -> MultiIndex Process

0 голосов
/ 02 декабря 2018

Я пытаюсь реструктурировать большой 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

У кого-нибудь есть предложения?Есть ли простой способ сделать это, манипулируя объектами groupby?

1 Ответ

0 голосов
/ 04 февраля 2019

Вы можете отсортировать строки с помощью:

df.sort_values(by='date')
...