Python 如何从跨越年份的一系列日期计算滚动平均值?

Python 如何从跨越年份的一系列日期计算滚动平均值?,python,pandas,Python,Pandas,我有一个CSV文件,包含跨越10年的股票数据。我如何使用熊猫找到这些日期的滚动平均值?我试过: pd.rolling_mean(df.resample("1D", fill_method="ffill"), window=3, min_periods=1) 我从先前的回答中得到的。但是我得到了一个错误: TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex 为什么会发生这种情况?正确的方法是什么 以下是

我有一个CSV文件,包含跨越10年的股票数据。我如何使用熊猫找到这些日期的滚动平均值?我试过:

pd.rolling_mean(df.resample("1D", fill_method="ffill"), window=3, min_periods=1)
我从先前的回答中得到的。但是我得到了一个错误:

TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex
为什么会发生这种情况?正确的方法是什么

以下是一些CSV文件数据:

    Date    Open    High    Low     Close   Avg Vol Adj Close
Nov 1, 2012 16.90   19.16   16.86   18.77   27,813,200  18.77
Oct 1, 2012 16.00   16.89   15.65   16.84   23,074,600  16.84
Sep 4, 2012 14.64   16.20   14.59   15.98   21,900,500  15.98
Aug 1, 2012 15.86   16.37   14.59   14.65   17,527,600  14.65
Jul 2, 2012 15.80   16.17   15.23   15.84   15,348,400  15.84
Jun 1, 2012 15.04   15.83   14.81   15.83   14,102,700  15.83
May 1, 2012 15.51   16.00   14.80   15.24   19,935,500  15.24
Apr 2, 2012 15.19   15.70   14.73   15.54   16,640,200  15.54
Mar 1, 2012 14.89   15.61   14.35   15.22   15,408,200  15.22
Feb 1, 2012 15.57   16.31   14.37   14.83   22,020,900  14.83
Jan 3, 2012 16.27   16.39   15.35   15.47   18,167,300  15.47
Dec 1, 2011 16.42   16.46   14.57   16.13   21,943,000  16.13
Nov 1, 2011 14.95   16.50   14.75   15.71   24,382,900  15.71
Oct 3, 2011 13.70   16.79   13.37   15.64   36,438,000  15.64
Sep 1, 2011 13.67   15.40   12.45   13.17   42,743,300  13.17
Aug 1, 2011 13.24   13.98   11.09   13.61   33,473,700  13.61
Jul 1, 2011 15.08   15.95   13.04   13.10   29,550,000  13.10
Jun 1, 2011 16.34   16.43   14.50   15.04   25,772,600  15.04
May 2, 2011 17.79   18.84   15.63   16.55   41,113,700  16.55
Apr 1, 2011 16.83   17.77   16.06   17.70   20,728,700  17.70
Mar 1, 2011 16.46   17.70   15.81   16.68   25,018,300  16.68
Feb 1, 2011 16.33   17.84   16.04   16.40   24,578,700  16.40
Jan 3, 2011 16.81   17.34   15.41   16.12   23,201,900  16.12
Dec 1, 2010 16.00   17.22   16.00   16.63   12,970,200  16.63
Nov 1, 2010 16.50   17.60   15.77   15.82   21,166,800  15.82
Oct 1, 2010 14.19   16.76   14.13   16.49   29,726,500  16.49
Sep 1, 2010 13.20   14.53   13.13   14.17   27,527,400  14.17
Aug 2, 2010 14.01   14.52   12.94   13.11   13,811,800  13.11
Jul 1, 2010 13.99   15.60   13.52   13.88   24,186,600  13.88
Jun 1, 2010 15.31   15.84   13.79   13.84   21,523,300  13.84
May 3, 2010 16.68   16.99   14.63   15.34   26,797,300  15.34
Apr 1, 2010 16.58   19.12   16.22   16.53   33,650,200  16.53
Mar 1, 2010 15.43   16.94   15.40   16.53   21,831,600  16.53
Feb 1, 2010 15.14   15.71   14.48   15.31   21,501,000  15.31
Jan 4, 2010 16.94   17.30   14.90   15.01   24,600,000  15.01
Dec 1, 2009 15.03   16.99   14.85   16.78   18,305,700  16.78
Nov 2, 2009 15.75   16.36   14.80   14.97   20,043,500  14.97
Oct 1, 2009 17.65   18.02   15.74   15.90   25,250,700  15.90
Sep 1, 2009 14.50   17.94   13.97   17.81   36,378,300  17.81
Aug 3, 2009 14.56   15.21   14.30   14.61   28,097,800  14.61
Jul 1, 2009 15.49   17.68   14.22   14.32   36,381,400  14.32
Jun 1, 2009 16.17   16.99   14.55   15.66   19,810,700  15.66
May 1, 2009 14.50   15.84   13.91   15.84   24,369,700  15.84
Apr 1, 2009 12.70   15.39   12.60   14.29   24,663,000  14.29
Mar 2, 2009 12.85   14.14   12.31   12.81   20,620,800  12.81
Feb 2, 2009 11.50   14.00   11.49   13.23   18,837,100  13.23
Jan 2, 2009 12.17   13.56   10.81   11.73   21,408,600  11.73
Dec 1, 2008 11.82   13.57   10.50   12.20   20,089,400  12.20
Nov 3, 2008 12.74   14.89   8.94    11.51   31,084,900  11.51
Oct 1, 2008 17.17   17.31   11.25   12.82   32,771,500  12.82
Sep 2, 2008 19.63   20.82   16.88   17.30   24,333,600  17.30
Aug 1, 2008 20.09   20.82   18.87   19.38   13,981,900  19.38
Jul 1, 2008 20.48   24.80   19.59   19.89   30,010,200  19.89

您需要将Date列转换为Datetime,然后在其上设置索引:

df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index("Date")
pd.rolling_mean(df.resample("1D", fill_method="ffill"), window=3, min_periods=1)
输出如下:

Date        Open   High       Low        Close      Avg         Vol
2008-07-01  20.48  24.800000  19.590000  19.890000  30.000000   10.000000
2008-07-02  20.48  24.800000  19.590000  19.890000  30.000000   10.000000

非常感谢。我还有一个问题。当我执行df[“Date”]时,它返回一个类类型。但我所期望的是一个包含csv列的数组。如何从中获取数组(我正在尝试使用matplotlib绘制日期,其中一个函数需要一个数组)一旦您将数据帧上的索引设置为日期(
df.set_index(“date”)
),您可以使用
df.index.values
获取datetimes@templateboyGreat的numpy数组。很抱歉,如果我偏离主题,但我还认为这是一个包含日期的字符串数组?这给我带来了一个问题。plot函数需要整数数组。您知道Python中是否有什么东西可以帮助我将日期时间解释为整数值吗?
map(int,df.index.values)
应该给您一个整数表示:)谢谢。你知道我将如何绘制滚动平均值吗?