【问题标题】:Pandas DataFrame --> GroupBy --> MultiIndex ProcessPandas DataFrame --> GroupBy --> MultiIndex 进程
【发布时间】:2023-03-25 02:38:01
【问题描述】:

我正在尝试将以下形式的大型 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、@987654326 @=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=...
...

看起来groupbyset_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 对象来做到这一点?

【问题讨论】:

  • 请将输出包含为文本而不是图像。
  • 对不起!已更新。
  • 您可以使用 df.sort_values(by='date') 对行进行排序
  • 谢谢@SandervandenOord -- 如果你想发帖作为答案,我可以接受。

标签: python pandas pandas-groupby hierarchical-data multi-index


【解决方案1】:

您可以使用以下命令对行进行排序:

df.sort_values(by='date')

【讨论】:

    猜你喜欢
    • 2021-05-18
    • 2019-06-16
    • 2017-04-06
    • 2018-10-28
    • 1970-01-01
    • 2017-06-27
    • 2019-05-20
    • 2017-08-25
    • 2016-11-06
    相关资源
    最近更新 更多