<p>最后我在写这个问题的时候就想出来了,所以我还是发帖子,回答我自己的问题,以防别人需要帮助</p>
<h2>问题</h2>
<p>假设我们有一个<code>DataFrame</code>,<code>df</code>,包含这个数据</p>
<pre><code>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")
</code></pre>
<h2>目标</h2>
<p>对于每一行,在距离它<strong>一个月之内的每一行上求<code>spendings</code>和,最好使用<code>DataFrame.rolling</code>,因为这是一种非常干净的语法</p>
<h2>我试过的</h2>
<pre><code>df = df.rolling("M").sum()
</code></pre>
<p>但这带来了一个例外</p>
<pre><code>ValueError: <MonthEnd> is a non-fixed frequency
</code></pre>
<p>版本:<code>pandas==0.19.2</code></p>