Python 使用多索引按时间戳频率分组数据帧

Python 使用多索引按时间戳频率分组数据帧,python,pandas,Python,Pandas,我有一个带有多索引(timestamp,dgg)的数据帧,如下所示: 时间戳持续了很多天。我想按月份和dgg对这些数据进行分组,但我不确定这是一个好方法。如果我使用具有正常索引的数据帧按月分组,我可以执行df.groupby(df.index.month)(或者使用pd.TimeGrouper),但多索引没有DatetimeIndex属性 如果我不想保留dgg,我可以df.reset_index(level='dgg').groupby(df.reset_index(level='dgg').i

我有一个带有多索引(timestamp,dgg)的数据帧,如下所示:

时间戳持续了很多天。我想按月份和dgg对这些数据进行分组,但我不确定这是一个好方法。如果我使用具有正常索引的数据帧按月分组,我可以执行
df.groupby(df.index.month)
(或者使用
pd.TimeGrouper
),但多索引没有DatetimeIndex属性


如果我不想保留dgg,我可以
df.reset_index(level='dgg').groupby(df.reset_index(level='dgg').index.month)
,但是我会丢失dgg分组。

假设你想按月份分组,而不是按年月份分组(例如,2012-03和2013-03在同一组中),你可以这样做:

  • 将索引重置为
    dgg
    timestamp
    成为常规列
  • 将计算月添加到它自己的列中
  • 然后按
    dgg
    month
    分组
看起来是这样的:

result = (
    df.reset_index()
      .assign(month=lambda x: x['timestamp'].dt.month)
      .grouby(by=['dgg', 'month'])
      .<apply/agg/transform/filter>(...)
)
结果=(
df.reset_index()
.assign(月=λx:x['timestamp'].dt.month)
.grouby(by=['dgg','month'])
.(...)
)

谢谢!责怪自己没有考虑重新设置这两个指数并从那里开始:)幸运的是,我现在不必担心不同的年份,但我认为如果(当)有必要的话,很清楚该怎么做。
result = (
    df.reset_index()
      .assign(month=lambda x: x['timestamp'].dt.month)
      .grouby(by=['dgg', 'month'])
      .<apply/agg/transform/filter>(...)
)