通过Python中的熊猫将每日库存数据转换为基于每周的数据

发布于 2021-01-29 15:09:18

我已经DataFrame存储了如下的每日数据:

Date              Open        High         Low       Close   Volume
2010-01-04   38.660000   39.299999   38.509998   39.279999  1293400   
2010-01-05   39.389999   39.520000   39.029999   39.430000  1261400   
2010-01-06   39.549999   40.700001   39.020000   40.250000  1879800   
2010-01-07   40.090000   40.349998   39.910000   40.090000   836400   
2010-01-08   40.139999   40.310001   39.720001   40.290001   654600   
2010-01-11   40.209999   40.520000   40.040001   40.290001   963600   
2010-01-12   40.160000   40.340000   39.279999   39.980000  1012800   
2010-01-13   39.930000   40.669998   39.709999   40.560001  1773400   
2010-01-14   40.490002   40.970001   40.189999   40.520000  1240600   
2010-01-15   40.570000   40.939999   40.099998   40.450001  1244200

我打算做的就是将其合并到基于每周的数据中。分组后:

  1. 日期 应为每星期一(在这一点上,节日的场景应该星期一,不是交易日认为,我们应该运用第一个交易日在本周的日期)。
  2. 开放 应该是星期一(或本周的第一个交易日)开放。
  3. 收盘价 应为星期五(或本周的最后一个交易日)收盘价。
  4. 高点 应该是当前一周中交易日的最高点。
  5. 低点 应该是当前一周中交易日的最低点。
  6. Volumn 应该是交易日的所有卷在本周的总和。

应该看起来像这样:

Date              Open        High         Low       Close   Volume
2010-01-04   38.660000   40.700001   38.509998   40.290001  5925600   
2010-01-11   40.209999   40.970001   39.279999   40.450001  6234600

目前,我的代码段如下所示,我应该使用哪个函数将每日数据映射到预期的每周数据?非常感谢!

import pandas_datareader.data as web

start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2016, 12, 31)
f = web.DataReader("MNST", "yahoo", start, end, session=session)
print f
关注者
0
被浏览
68
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以resample(至每周),offset(轮班)和apply汇总规则如下:

    logic = {'Open'  : 'first',
             'High'  : 'max',
             'Low'   : 'min',
             'Close' : 'last',
             'Volume': 'sum'}
    
    offset = pd.offsets.timedelta(days=-6)
    
    f = pd.read_clipboard(parse_dates=['Date'], index_col=['Date'])
    f.resample('W', loffset=offset).apply(logic)
    

    要得到:

                     Open       High        Low      Close   Volume
    Date                                                           
    2010-01-04  38.660000  40.700001  38.509998  40.290001  5925600
    2010-01-11  40.209999  40.970001  39.279999  40.450001  6234600
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看