我有一个 pandas
series.groupby
对象,称之为 data
。如果我打印出元素,它看起来像这样:
<pandas.core.groupby.generic.SeriesGroupBy object at ***>
(1, 0 397.44
1 12.72
2 422.40
Name: value, dtype: float64)
(2, 3 398.88
4 6.48
5 413.52
Name: value, dtype: float64)
(3, 6 398.40
7 68.40
8 18.96
9 56.64
10 406.56
Name: value, dtype: float64)
(4, 11 398.64
12 14.64
13 413.76
Name: value, dtype: float64)
...
我想创建一个等效的对象,其中条目是系列中每个子列表的累积和,减去该列表的第一个条目。因此,例如,第一个元素将变为:
(1, 0 0 #(= 397.44 - 397.44)
1 12.72 #(= 397.44 + 12.72 - 397.44)
2 435.12 #(= 397.44 + 12.72 + 422.40 - 397.44)
我可以使用
apply
轻松获得累计总和:
cumulative_sums = data.apply(lambda x: x.cumsum())
但是当我尝试以我认为直观的方式减去列表的第一个元素时(
lambda x: x.cumsum()-x[0]
),我得到了KeyError
。我怎样才能实现我想要做的事情?
尝试:
cumulative_sums = data.apply(lambda x: x.cumsum() - x.iat[0])
print(cumulative_sums)
打印:
a b
1 0 0.00
1 12.72
2 435.12
2 3 0.00
4 6.48
5 420.00
3 6 0.00
7 68.40
8 87.36
9 144.00
10 550.56
Name: value, dtype: float64