【问题标题】:Sum of values while grouping in pandas在熊猫中分组时的值总和
【发布时间】:2020-09-04 20:20:47
【问题描述】:

我有一个看起来像这样的 pandas DataFrame

Date         item   count
2019-01-01   i1     25
2019-01-01   i2     46
2019-01-02   i1     97
2019-01-02   i2     23
2019-01-02   i3     26
2019-01-03   i4     237
2019-01-04   i2     25
2019-01-10   i2     59

日期是日期时间类型

我正在寻找一种方法来将每个项目的总和分组到每周的垃圾箱中。生成的数据框应如下所示:

Week                       i1      i2     i3    i4
(2019-01-01, 2019-01-08]   122     94     26    237
(2019-01-08, 2019-01-15]   0       59     0     0

我查看了Pandas pd.cut() - binning datetime column / series 来创建日期箱,但我不希望按箱分组的项目数,而是按箱分组的项目数的总和。到目前为止,我唯一可行的解​​决方案是使用 pandas.iterrows() 并遍历每一行。有更好的方法吗?

【问题讨论】:

    标签: pandas datetime pandas-groupby


    【解决方案1】:

    groupby 之后我们有unstack

    s=df.groupby([df.Date.dt.week,df.item])['count'].sum().unstack(fill_value=0)
    Out[204]: 
    item   i1  i2  i3   i4
    Date                  
    1     122  94  26  237
    2       0  59   0    0
    

    【讨论】:

    • 谢谢!这为我节省了很多时间!
    猜你喜欢
    • 2017-02-06
    • 2020-10-12
    • 2020-02-21
    • 2021-02-23
    • 2022-06-22
    • 2015-10-09
    • 2018-10-07
    • 2019-05-20
    • 1970-01-01
    相关资源
    最近更新 更多