我的数据框中有每日股票数据:
Date AAPL NFLX INTC
0 2008-01-02 27.834286 3.764286 25.350000
1 2008-01-03 27.847143 3.724286 24.670000
2 2008-01-04 25.721428 3.515714 22.670000
3 2008-01-07 25.377142 3.554286 22.879999
4 2008-01-08 24.464285 3.328571 22.260000
我希望能够使用上面数据框中每月的最后一天来计算月度收益。通过搜索发现,重新采样(resample)是选择每月最后一个交易日的最佳方法。但这似乎不起作用:
df.set_index('Date')
m1= df.resample('M')
print(m1)
我遇到了这个错误:
类型错误:只有 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 才是有效的,但得到了“Index”的实例
所以我认为这意味着 set_index 没有起作用?
我还尝试过:
df= df.reset_index().set_index('Date')
m1= df.resample('M')
print(m1)
但我收到了与上述相同的错误信息。非常感谢您的帮助。
set_index
不带inplace
标志是非原地操作。这就是为什么你的第一次尝试不起作用的原因,因为你实际上没有改变你的数据框。 - user3483203df.set_index('Date').resample('M').last()
。该代码可将数据框按照日期设置索引后,对每个月进行重采样,并保留每个月的最后一行数据。 - user3483203