将pandas数据框中的每日数据转换为每月数据 [英] Convert daily data in pandas dataframe to monthly data
问题描述
我的数据框中包含每日库存数据:
My dataframe has daily stock data in it:
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
我想使用上述df中每个月的最后一天来计算月收益.我猜(在谷歌搜索之后),重新采样是选择每月最后一个交易日的最佳方法.但这似乎不起作用:
I'd like to calculate monthly returns using the last day of each month in my df above. I'm guessing (after googling) that resample is the best way to select the last trading day of the month. But this doesn't seem to work:
df.set_index('Date')
m1= df.resample('M')
print(m1)
得到此错误:
TypeError:仅对DatetimeIndex,TimedeltaIndex或PeriodIndex有效,但具有"Index"的实例
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'
所以我认为这意味着set_index无法正常工作?
So I think that means the set_index isn't working?
我也尝试过:
df= df.reset_index().set_index('Date')
m1= df.resample('M')
print(m1)
但是我收到与上面相同的错误消息.非常感谢您的帮助.
But I get the same error message as above. Thanks much for your help.
推荐答案
您的索引不是DatetimeIndex.但您可以将其设为DatetimeIndex:
Your index is not a DatetimeIndex. But you can make it a DatetimeIndex:
df.set_index('Date', inplace=True)
df.index = pd.to_datetime(df.index)
df.resample('1M').mean()
# AAPL NFLX INTC
#Date
#2008-01-31 26.248857 3.577429 23.566
这篇关于将pandas数据框中的每日数据转换为每月数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!