我有福尔。带有日期时间索引的 pandas 数据框:
datetime VAL
2000-01-01 -283.0000
2000-01-02 -283.0000
2000-01-03 -10.6710
2000-01-04 -12.2700
2000-01-05 -10.7855
2001-01-06 -9.1480
2001-01-07 -9.5300
2001-01-08 -10.4675
2001-01-09 -10.9205
2001-01-10 -11.5715
Run Code Online (Sandbox Code Playgroud)
我想计算每年的累积值并用累积值替换 VAL 列。例如,它看起来像这样:
datetime VAL
2000-01-01 -283.0000
2000-01-02 -283.0000 + -283.0000
2000-01-03 -10.6710 + -283.0000 + -283.0000
2000-01-04 -12.2700 + -10.6710 + -283.0000 + -283.0000
2000-01-05 -10.7855 + -12.2700 + -10.6710 + -283.0000 + -283.0000
2001-01-06 -9.1480
2001-01-07 -9.5300 + -9.5300
2001-01-08 -10.4675 + -10.4675
2001-01-09 -10.9205 + -10.9205
2001-01-10 -11.5715 + -11.5715
Run Code Online (Sandbox Code Playgroud)
我没有进行实际计算,这就是为什么你看到 -283.000 + -283.000 而不是 -566.0000
不知道如何继续,我可以做一个 groupby 然后呢?
.year您可以通过DateTimeIndex访问年份,并将其传递给groupby:
>>> df["cumulative_VAL"] = df.groupby(df.index.year)["VAL"].cumsum()
>>> df
VAL cumulative_VAL
datetime
2000-01-01 -283.0000 -283.0000
2000-01-02 -283.0000 -566.0000
2000-01-03 -10.6710 -576.6710
2000-01-04 -12.2700 -588.9410
2000-01-05 -10.7855 -599.7265
2001-01-06 -9.1480 -9.1480
2001-01-07 -9.5300 -18.6780
2001-01-08 -10.4675 -29.1455
2001-01-09 -10.9205 -40.0660
2001-01-10 -11.5715 -51.6375
Run Code Online (Sandbox Code Playgroud)