【发布时间】:2016-04-08 11:10:30
【问题描述】:
我有一个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
我打算将其合并到基于每周的数据中。分组后:
- 日期应为每周一(此时应考虑周一非交易日的节假日情况,应以当周第一个交易日为日期)。
- 开盘应该是周一(或本周的第一个交易日)开盘。
- 收盘价应为周五(或本周最后一个交易日)收盘价。
- High应该是本周交易日的最高High。
- 最低价应该是本周交易日的最低价。
- 成交量应该是当周所有交易日成交量的总和。
应该是这样的:
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
目前,我的代码 sn-p 如下,我应该使用哪个函数将基于每日的数据映射到预期的基于每周的数据?非常感谢!
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
【问题讨论】:
-
您是否已经采取措施实现您想要的结果?如果是这样,您的尝试在哪里失败了?
-
我对 pandas 完全陌生,所以我不知道应该从哪个方向开始。如果您可以提供一些正确的功能,那就太好了。看来我们需要一个
group函数,它可以分别对每一列应用关于如何合并每一列的规则。 @Stefan
标签: python pandas yahoo-finance