总结不同的日期和类别

Posted

技术标签:

【中文标题】总结不同的日期和类别【英文标题】:Summing different dates and categories 【发布时间】:2021-10-25 19:36:08 【问题描述】:

所以我有一个 pandas 数据框,它按日期和特定类别分组,并具有另一列的总和。我想做的是获取特定日期的特定类别的数字并将其添加到第二天,然后获取该数字并将其添加到第二天。例如,假设类别是苹果,日期是 5-26-2021,成本是 5 美元。第二天,2021 年 5 月 27 日是 6 美元。所以 2021 年 5 月 27 日的费用应该是 11 美元。然后 2021 年 5 月 28 日的成本为 3 美元,但应添加到 11 美元,因此成本应显示为 14 美元。我该怎么做呢?顺便说一句,除了苹果之外,还有多个类别。谢谢! enter image description here 预期输出: (输出不是最准确的,这个数据框也不是最准确的,请随时提问)

【问题讨论】:

你能添加一个数据框的样本和预期的输出吗? 我添加了一个非常粗略的例子。基本上,会有多个日期,每个日期会有多个类别,每个类别和日期都会有成本。我希望输出基本上给我一个前一天加到当天的总和 【参考方案1】:

使用 groupby 然后cumsum

data = [
    [2021, 'apple', 1,],
    [2022, 'apple', 2,],
    [2021, 'banana', 3,],
    [2022, 'cherry', 4],
    [2022, 'banana', 5],
    [2023, 'cherry', 6],
]
columns = ['date','category', 'cost']
df = pd.DataFrame(data, columns=columns)
>>> df
   date category  cost
0  2021    apple     1
1  2022    apple     2
2  2021   banana     3
3  2022   cherry     4
4  2022   banana     5
5  2023   cherry     6
df.sort_values(['category','date'], inplace=True)
df.reset_index(drop=True, inplace=True)
df['CostCsum'] = df.groupby(['category'])['cost'].cumsum()
   date category  cost  CostCsum
0  2021    apple     1         1
1  2022    apple     2         3
2  2021   banana     3         3
3  2022   banana     5         8
4  2022   cherry     4         4
5  2023   cherry     6        10

【讨论】:

我错了,它确实有效,非常感谢!

以上是关于总结不同的日期和类别的主要内容,如果未能解决你的问题,请参考以下文章

推荐收藏,这或许是最全的类别型特征的编码方法总结

如何在R中排除彼此靠近的相同类别日期?

Pandas 分别对每个类别的日期范围求和

SQL中哪个字段类别记录日期和哪个字段类别记录时间

具有日期和类别维度的 SQL 表

不同类别分类的数据集数量是不是重要