我有一个pandas数据框架,它按日期和特定类别分组,并具有另一列的和。我想做的是把某一天某一类商品的价格加到第二天再把这个价格加到第二天。例如,假设类别是苹果,日期是5-26-2021,成本是5美元。第二天,5-27-2021是6美元。所以5-27-2021的成本应该是11美元。5-28-2021的成本是3美元,但应该加到11美元,所以成本应该显示为14美元。我该怎么做呢?顺便说一下,除了苹果还有很多种类。谢谢你!在这里输入图像描述预期的输出:(输出不是最准确的,这个数据帧也不是最准确的,所以请随意提问)
使用groupby then 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