我在写出这个问题时最终弄清楚了,所以我无论如何都会发布并回答我自己的问题,以防其他人需要一点帮助。
Problem
假设我们有一个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")
Goal
对于每一行,求和spendings
在其中的每一行上一个月其中,理想情况下使用DataFrame.rolling
因为它是一个非常干净的语法。
我尝试过的
df = df.rolling("M").sum()
但这会引发异常
ValueError: <MonthEnd> is a non-fixed frequency
版本:pandas==0.19.2
Use the "D"
偏移而不是"M"
并具体使用"30D"
30天或大约1个月。
df = df.rolling("30D").sum()
最初,我直觉地跳到使用"M"
正如我所认为的,它可以持续一个月,但现在很清楚为什么这不起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)