【发布时间】:2017-09-19 06:16:02
【问题描述】:
我最终在写这个问题时弄明白了,所以我还是会发布并回答我自己的问题,以防其他人需要一点帮助。
问题
假设我们有一个DataFrame、df,包含这些数据。
import pandas as pd
from io import StringIO
data = StringIO(
"""\
date spendings category
2014-03-25 10 A
2014-04-05 20 A
2014-04-15 10 A
2014-04-25 10 B
2014-05-05 10 B
2014-05-15 10 A
2014-05-25 10 A
"""
)
df = pd.read_csv(data,sep="\s+",parse_dates=True,index_col="date")
目标
对于每一行,将 spendings 与它 一个月 内的每一行相加,最好使用 DataFrame.rolling,因为它的语法非常简洁。
我尝试过的
df = df.rolling("M").sum()
但这会引发异常
ValueError: <MonthEnd> is a non-fixed frequency
版本:pandas==0.19.2
【问题讨论】: