Python 多年来每天的平均值

Python 多年来每天的平均值,python,numpy,pandas,Python,Numpy,Pandas,快速问: 拥有一个数据集:这是几年中每天的测量值。 试图计算出所有相同日期的平均值。i、 e 1995年1月1日、1996年1月1日和1997年1月1日等的平均数 我试过这个: z=df.groupby(df.index.day,df.index.month).mean() 但是你可以得到: TypeError: unhashable type: 'numpy.ndarray' 干杯你需要通过一个列表: z=df.groupby([df.index.day,df.index.month]).

快速问:

拥有一个数据集:这是几年中每天的测量值。 试图计算出所有相同日期的平均值。i、 e 1995年1月1日、1996年1月1日和1997年1月1日等的平均数

我试过这个:

z=df.groupby(df.index.day,df.index.month).mean()
但是你可以得到:

TypeError: unhashable type: 'numpy.ndarray'

干杯你需要通过一个列表:

z=df.groupby([df.index.day,df.index.month]).mean()

您所做的是传递多个arg,因此它将months数组解释为轴的arg,请参见

Hey@EdChum只是将此添加为答案,因为注释的显示不允许我显示我的意思。我同意日期格式是一种高级语法!然而,当我按相反的顺序做时,我得到

    WindSpeed

1   1   1   9.283333
1   2   6.694444
1   3   7.861111
1   4   9.223529
...
1   31  8.964706
2   1   9.127778
2   2   8.733333
2   3   7.511111
...
其中第一个指数是月,第二个指数是日。 当我按照你建议的顺序做时,我得到:

    WindSpeed
1   1   9.283333
1   2   8.361111
1   3   6.670588
1   4   7.155556
1   5   8.450000
1   6   4.777778
1   7   3.666667
1   8   4.011765
1   9   5.210526
1   10  6.972222
1   11  7.647059
1   12  6.844444
...

其中第一个指数是天(从1-31),第二个指数是月(从1-12)。我们通常按顺序查看数据,1月1日之后是1月2日。在你的书里,一月一日之后是二月一日。这让我有点困惑!不管怎样,我的工作对我的需要更好。我非常感谢你的回答!帮助我解决了我的问题。

您的数据是如何存储的?检查一下就好了,这样(因为我将数据分为几年,即1990-2000年和2000-2010年)它们的顺序是否相同。只要标签上写着(1,1),(2,20),(4,11),(5,31),(7,20),(9,8),(10,28),(12,17),它就会按照你传递的参数列表对它们进行排序,除非你想保留df顺序,在这种情况下,pass
sort=False
注意:颠倒语法会得到更直观的结果;第一个指数是月,第二个指数是日<代码>日期分组比([dat.index.month,dat.index.day]).mean()。否则,你可能会挠头,不知道为什么一个月只有12天,一分钟才意识到发生了什么。@EHB我生活在世界的一部分,那里的惯例是
dd/mm/yyyyy
日期的表示方式取决于当地人的偏好,此外,这也是OP要求的格式