【问题标题】:How can I aggregate (sum, mean, etc.) values and create a new Pandas dataframe based on that?如何聚合(总和、平均值等)值并基于此创建新的 Pandas 数据框?
【发布时间】:2021-03-05 15:42:23
【问题描述】:

我有一个 Pandas 数据框 <pandas.core.frame.DataFrame>,它有多个日期列。

Year           Month          Count1    Count2
2015-01-01     2015-05-01     11        23
2015-01-01     2015-03-01     13        24
2020-01-01     2020-05-01     12        22
2020-01-01     2020-05-01     43        13
...

因此,它表示第二行在月份类别中属于 3 月,在年份类别中属于 2015 年。我想做的是创建一个新的数据框来聚合(让我们求和)属于同一类别的行。

例如,如果我想按年份汇总

Month          Count1    Count2
2015-05-01     11        23
2020-01-01     55        35
...

按月算

Month          Count1    Count2
2015-01-01     24        47
2015-03-01     13        24
2020-05-01     55        35
...

有什么帮助吗?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    这个操作可以通过;

    agg_col = "Year"
    
    new_df = df.groupby(by=agg_col, as_index=False).agg({"Count1": "sum", "Count2": "sum"})
    

    如果要按月分组,可以将agg_col 更改为Month

    【讨论】:

    • 我可以做df2 = df.groupby(by=agg_col, as_index=False).agg({"Count1": "sum", "Count2": "sum"}) 还是会修改df?
    • 当然,你写的代码不会修改原来的df,而是新建一个聚合的。我正在更改答案以更清楚。
    猜你喜欢
    • 2021-06-26
    • 1970-01-01
    • 2019-11-29
    • 2023-03-04
    • 2019-08-22
    • 1970-01-01
    • 2021-06-28
    • 2022-11-29
    • 1970-01-01
    相关资源
    最近更新 更多