【问题标题】:Groupby more than1 columns and then average over another column按超过 1 列分组,然后对另一列进行平均
【发布时间】:2018-11-28 22:33:29
【问题描述】:

我有以下数据集:

     cod           date              value 
0   1O8        2015-01-01 00:00:00    2.1
1   1O8        2015-01-01 01:00:00    2.3
2   1O8        2015-01-01 02:00:00    3.5
3   1O8        2015-01-01 03:00:00    4.5
4   1O8        2015-01-01 04:00:00    4.4
5   1O8        2015-01-01 05:00:00    3.2
6   1O9        2015-01-01 00:00:00    1.4
7   1O9        2015-01-01 01:00:00    8.6
8   1O9        2015-01-01 02:00:00    3.3
10  1O9        2015-01-01 03:00:00    1.5
11  1O9        2015-01-01 04:00:00    2.4
12  1O9        2015-01-01 05:00:00    7.2

我想按 cod 和 date(month) 聚合并取平均值,如下所示:

                  value     
cod  date
1O8  2015-01-01    3.3
1O9  2015-01-01    4.9

我的数据有以下类型:dtypes:object(1), datetime64[ns](1), float64(1)

我尝试使用.groupby() 函数进行聚合:

df.groupby(['cod', 'date', 'value']).size().reset_index().groupby('value').mean()

但没有产生正确的结果

【问题讨论】:

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


    【解决方案1】:

    使用Grouper

    df.groupby(["cod", pd.Grouper(key="date", freq="MS")]).mean()
    

    pbpython.com 的更多信息

    【讨论】:

    • 这个函数产生这个错误:IndexError: index 43462904 is out of bounds for size 43462904。像往常一样?
    • 它适用于这个小样本,因此可能与行中的值有关 43462904
    猜你喜欢
    • 2016-06-05
    • 2017-08-12
    • 2022-08-21
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2016-02-26
    • 1970-01-01
    相关资源
    最近更新 更多