按月对Python中的datetime对象进行分组

时间:2017-06-25 19:12:08

标签: python pandas datetime

我有一个字典,用于将ID映射到日期时间对象和该给定ID的数字分数。我想要做的是创建一个新的字典,其中键值对是月份和该月份所有对象的平均分数。构建这本字典最简单的方法是什么?谢谢!

这就是字典的样子......

{878947806442119168: [datetime.datetime(2017, 6, 25, 12, 7, 41), 0.5411], 
878946025662296064: [datetime.datetime(2017, 6, 25, 12, 0, 37), -0.522], 
878725385235701761: [datetime.datetime(2017, 6, 24, 21, 23, 52), 0.6588], 
878717095701336064: [datetime.datetime(2017, 6, 24, 20, 50, 56), -0.5992], 
878715504063643648: [datetime.datetime(2017, 6, 24, 20, 44, 36), 0.3724], 
878711517537083392: [datetime.datetime(2017, 6, 24, 20, 28, 46), -0.3595] ... 
}

我想要的是什么 {月:当月的平均分数}

2 个答案:

答案 0 :(得分:2)

我认为您首先需要DataFrame.from_dict然后groupby需要dt.monthstrftime,最后to_dict

df = pd.DataFrame.from_dict(d, orient='index')
d = df.groupby(df[0].dt.month)[1].mean().to_dict()
print (d)
{6: 0.015266666666666687}

或者:

d = df.groupby(df[0].dt.strftime('%b'))[1].mean().to_dict()
print (d)
{'Jun': 0.015266666666666687}
d = df.groupby(df[0].dt.strftime('%b-%Y'))[1].mean().to_dict()
print (d)
{'Jun-2017': 0.015266666666666687}

答案 1 :(得分:0)

不使用"react-test-renderer": "^16.0.0-alpha.12",您也可以使用pandas

defaultdict