将pandas数据框中的每日数据转换为每月数据 [英] Convert daily data in pandas dataframe to monthly data

查看:1557
本文介绍了将pandas数据框中的每日数据转换为每月数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的数据框中包含每日库存数据:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆