Python 在pandas中指定groupby之后的datetime

Python 在pandas中指定groupby之后的datetime,python,pandas,Python,Pandas,我正在做一个气候学,即在数据框架上,以多年的每日数据和日期时间为索引,进行如下平均: df.groupby([df.index.month, df.index.day]).mean() 一旦我做了groupby,datetime索引就消失了。这很有意义,因为groupby之后的每一行都没有唯一的datetime 有没有一种方法可以在groupby完成后通过人为地指定一年来重新引入日期时间 --编辑数据帧: datetime val1 val2 1/1/2000 74.2576

我正在做一个气候学,即在数据框架上,以多年的每日数据和日期时间为索引,进行如下平均:

df.groupby([df.index.month, df.index.day]).mean()
一旦我做了groupby,datetime索引就消失了。这很有意义,因为groupby之后的每一行都没有唯一的datetime

有没有一种方法可以在groupby完成后通过人为地指定一年来重新引入日期时间

--编辑数据帧:

datetime    val1    val2
1/1/2000    74.25769    5.813470958
1/2/2000    74.25769    5.813470958
1/3/2000    74.25769    5.813470958
1/4/2000    74.25769    5.813470958
1/5/2000    76.67728083 5.813470958
1/6/2000    76.67728083 5.813470958
1/7/2000    76.67728083 5.813470958
1/4/2001    76.67728083 5.813470958
1/5/2001    77.30620917 12.3357252
1/6/2001    77.30620917 12.3357252
1/7/2001    77.30620917 12.3357252
1/8/2001    77.30620917 12.3357252
1/9/2001    77.30620917 12.3357252
1/10/2001   77.30620917 12.3357252

IIUC您丢失了
信息,但您可以通过自定义
索引
中进行设置:

import datetime

df = df.groupby([df.index.month, df.index.day]).mean()
print df
           val1       val2
1 1   74.257690   5.813471
  2   74.257690   5.813471
  3   74.257690   5.813471
  4   75.467485   5.813471
  5   76.991745   9.074598
  6   76.991745   9.074598
  7   76.991745   9.074598
  8   77.306209  12.335725
  9   77.306209  12.335725
  10  77.306209  12.335725

df['Date'] = df.index.map(lambda x: datetime.date(2000, x[0], x[1]))
print df.set_index('Date')
                 val1       val2
Date                            
2000-01-01  74.257690   5.813471
2000-01-02  74.257690   5.813471
2000-01-03  74.257690   5.813471
2000-01-04  75.467485   5.813471
2000-01-05  76.991745   9.074598
2000-01-06  76.991745   9.074598
2000-01-07  76.991745   9.074598
2000-01-08  77.306209  12.335725
2000-01-09  77.306209  12.335725
2000-01-10  77.306209  12.335725

IIUC您可以通过将
df
reset_index
分组,然后从groupedtanks@AntonProtopopov将
set_index
设置,如果您可以将其添加为答案,我可以测试并接受您是否可以显示
df
?可能是类似于
df.head(10)
?@antonprotopov,添加了示例dataframeHmm,
mean
with
dtype
datetime64[ns]
给我一个错误:
TypeError:reduction operation'mean'不允许用于此dtype
。在我这样做之后:
df1=df.reset_index();df1.groupby([df1.datetime.dt.month,df1.datetime.dt.day]).mean()
datetime
列消失。。