【发布时间】:2019-01-20 11:38:51
【问题描述】:
我有一个这样的数据框:
df =
name amount date
0 A 10 1
1 B 15 1
2 A 5 2
3 C 7 3
4 A 8 4
5 B 10 4
6 C 11 4
我会根据姓名和日期做一个累积总和,我的意思是,我希望这个例子的结果是:
df_result =
name amount date
0 A 10 1
1 B 15 1
2 A 15 2
3 B 15 2
4 A 15 3
5 B 15 3
6 C 7 3
7 A 23 4
8 B 25 4
9 C 18 4
我想显示日期列表示的时间段内的累计值,例如,对于 A 的情况,它在周期 1 中的值为 10,在 2 中为 5,在 3 中为 0(因为它没有出现),在 4 中是 8,因此在 df_result 中显示了累积。 C 直到周期 3 才出现,因为它在该周期之前没有价值
我尝试了 groupby、cumsum 甚至 stack 的不同组合,但我无法实现任何接近的结果。
【问题讨论】:
-
你能解释一下你如何从输入到输出的逻辑吗?例如,为什么你最终会得到更多的行?看起来你已经“填充”了日期 3……但我可能希望日期 1 在这种情况下有一个带有 0 的 C……
-
你可能正在寻找这个
df.groupby(by=['name','date']).sum().groupby(level=[0]).cumsum().reset_index() -
当然@JonClements:我想显示日期列表示的时间段内的累积值,例如,对于A的情况,它在周期1的值是10,在2它为 5,在 3 中为 0(因为它没有出现),在 4 中为 8,因此在 df_result 中显示了累积。 C 直到第 3 期才出现,因为它在该期之前没有价值。我希望我解释得很好
-
@Á.Garzón 请edit 回答你的问题:)