【发布时间】:2015-11-08 21:28:06
【问题描述】:
对于不同的商品,我在 Pandas 中有以下日期范围:
df = pd.DataFrame([], columns=["Bid", "Ask"], index_col='tid')
填充如下:
2015-07-15 07:16:39.034 49.960 50.000
2015-08-12 07:16:39.235 49.958 49.998
我需要找到每天的滚动平均值。所以我这样提取日期:
dates = set(df.index.map(pd.Timestamp.date))
然后我遍历日期并计算滚动平均值:
for d in dates:
df['rm200'] = np.round(pd.rolling_mean(df[d]['Bid'], window=200), 5)
这给出了以下错误:
KeyError: datetime.date(2015, 7, 15)
如果我这样添加 str(d):
df['rm200'] = np.round(pd.rolling_mean(df[str(d)]['Bid'], window=200), 5)
错误消失了,但我没有得到滚动平均值。
但是,如果我从错误中复制日期并添加它,我会得到我想要的结果,但出于显而易见的原因,仅针对相关日期:
df['rm200'] = np.round(pd.rolling_mean(df['2015, 7, 15']['Bid'], window=200), 5)
如何遍历日期并分别为每个日期执行操作?
【问题讨论】:
标签: python datetime pandas dataframe time-series