【问题标题】:Erro groupby by timedate按时间日期的错误分组
【发布时间】:2018-11-27 10:13:57
【问题描述】:

我有一个包含 2 列的示例数据集:日期和 eVal,如下所示:

             eVal      Dates
0        3.622833 2015-01-01
1        3.501333 2015-01-01
2        3.469167 2015-01-01
3        3.436333 2015-01-01
4        3.428000 2015-01-01
5        3.400667 2015-01-01
6        3.405667 2015-01-01
7        3.401500 2015-01-01
8        3.404333 2015-01-01
9        3.424833 2015-01-01
10       3.489500 2015-01-01
11       3.521000 2015-01-01
12       3.527833 2015-01-01
13       3.523500 2015-01-01
14       3.511667 2015-01-01
15       3.602500 2015-01-01
16       3.657667 2015-01-01
17       3.616667 2015-01-01
18       3.534500 2015-01-01
19       3.529167 2015-01-01
20       3.548167 2015-01-01
21       3.565500 2015-01-01
22       3.539833 2015-01-01
23       3.485667 2015-01-01
24       3.493167 2015-01-02
25       3.434667 2015-01-02
26       3.422500 2015-01-02
           ...        ...
3304546  3.166000 2015-01-31
3304547  3.138500 2015-01-31
3304548  3.128000 2015-01-31
3304549  3.078833 2015-01-31
3304550  3.106000 2015-01-31
3304551  3.116167 2015-01-31
3304552  3.087500 2015-01-31
3304553  3.089167 2015-01-31
3304554  3.126667 2015-01-31
3304555  3.191667 2015-01-31
3304556  3.227500 2015-01-31
3304557  3.263833 2015-01-31
3304558  3.263667 2015-01-31
3304559  3.255333 2015-01-31
3304560  3.265500 2015-01-31
3304561  3.234167 2015-01-31
3304562  3.231167 2015-01-31
3304563  3.236333 2015-01-31
3304564  3.274667 2015-01-31
3304565  3.223167 2015-01-31
3304566  3.238333 2015-01-31
3304567  3.235000 2015-01-31
3304568  3.227333 2015-01-31
3304569  3.185333 2015-01-31

我想按天汇总并为每一天做一个平均值(列 eVal)。我尝试使用:

me = time['eVal'].groupby(time['Dates']).mean()

但它返回了错误的平均值:

me.head(10)
Out[149]: 
Dates
2015-01-01    4.014973  
2015-01-02    4.006548
2015-01-03    4.010406
2015-01-04    4.034531
2015-01-05    3.988262
2015-01-06    3.972111
2015-01-07    3.989347
2015-01-08    3.959556
2015-01-09    3.995394
2015-01-10    4.048786
Name: eVal, dtype: float64

如果我对 groupby 应用了描述,则 groupby 组不正确。个别日子的最大值和最小值,平均值是错误的。

【问题讨论】:

    标签: python-3.x mean pandas-groupby


    【解决方案1】:

    您可以使用下面的代码行。

    time.groupby('Dates').mean()

    我已在您的示例上尝试过此操作,以下是示例输出。

    eVal    Dates
    
    2015-01-01    3.506160
    2015-01-02    3.450111
    

    【讨论】:

    • 很抱歉,但在我的情况下,该功能不起作用。我的 df 长度为 len(time) Out[7]: 3304570 。似乎我计算的是 df 总数而不是每天的描述性统计数据(最小值、最大值和平均值)
    • 如果我将前 24 行(第一天)放在另一个 df 中,该函数可以正常工作
    • 您能否检查一下您的数据框是否只有 24 条“2015-01-01”记录?
    猜你喜欢
    • 2014-03-28
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多