在Pandas中获取多年平均年份(多年天数的平均值)

8
我刚接触Pandas时间序列和数据框架,并且在完成这个简单的任务时遇到了困难。我有一个数据集"data"(一维float32-Numpy数组),从2004年1月1日到2008年12月31日的每一天都有数据。日期被存储为datetime对象的列表"dates"。基本上,我想计算一个完整的"标准年"——所有年份(1-365)每天的平均值。我从这个类似的问题开始(在pandas数据框中获得工作日某小时的平均值),但无法得到所需的结果——365个"平均"日的时间序列,例如所有1月1日、2月1日的平均值......一个小例子脚本:
import numpy as np
import pandas as pd
import datetime

startdate = datetime.datetime(2004, 1, 1)
enddate = datetime.datetime(2008, 1, 1)
days = (enddate + datetime.timedelta(days=1) - startdate).days
data = np.random.random(days)
dates = [startdate + datetime.timedelta(days=x) for x in range(0, days)]

ts = pd.Series(data, dates)
test = ts.groupby(lambda x: (x.year, x.day)).mean()
1个回答

14

按月份和日期分组,而不是年份和日期:

test = ts.groupby([ts.index.month, ts.index.day]).mean()
产出。
1  1     0.499264
   2     0.449357
   3     0.498883
...
12  17    0.408180
    18    0.317682
    19    0.467238
...    
    29    0.413721
    30    0.399180
    31    0.828423
Length: 366, dtype: float64

2
谢谢,我找了很久才找到这个 :) - Renier Botha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接