通过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
我打算做的就是将其合并到基于每周的数据中。分组后:
- 该 日期 应为每星期一(在这一点上,节日的场景应该星期一,不是交易日认为,我们应该运用第一个交易日在本周的日期)。
- 开放 应该是星期一(或本周的第一个交易日)开放。
- 收盘价 应为星期五(或本周的最后一个交易日)收盘价。
- 高点 应该是当前一周中交易日的最高点。
- 低点 应该是当前一周中交易日的最低点。
- 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 个回答
-
您可以
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