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
withdtype
datetime64[ns]
给我一个错误:TypeError:reduction operation'mean'不允许用于此dtype
。在我这样做之后:df1=df.reset_index();df1.groupby([df1.datetime.dt.month,df1.datetime.dt.day]).mean()
datetime
列消失。。