Python熊猫系列下一个市场日期

问题描述 投票:0回答:1

我有一个熊猫系列的股票收盘价,显示如下:

closingprice [DATE1]

DATE1

> 1/3/2017  151.732605 
  1/9/2017  152.910522 
  1/27/2017 153.945938
> 2/23/2017 167.495438 
  3/6/2017  158.808716 
  3/9/2017  157.894333
> 3/10/2017 157.513321 
  3/13/2017 156.7323 
  3/21/2017 158.856354
> 3/24/2017 158.132462 
  4/3/2017  158.780151 
  4/12/2017 162.085281

我需要查看30天后的收盘价,例如,我有2017-01-03,我需要有2017-02-02的收盘价。所以我做了:

date2 = date1 + pd.DateOffset(days = 30)我有新服务,如下所示:

closingprice [DATE2]

> 2/2/2017  159.731018 
  2/8/2017  160.418427 
  2/26/2017 NaN 
  3/25/2017 NaN
> 4/5/2017  159.065903 
  4/8/2017  NaN 
  4/9/2017  NaN

正如您所看到的,某些日期不是在营业日期,而是以NaN的形式提供给我。如果是这种情况,如果周末或假日30天,我如何获得下一个营业日期价格?例如:2月26日南方需要更换到2月27日的收盘价。

python pandas series
1个回答
0
投票

一个技巧是每个日期添加30天,然后在每个日期添加零BusinessDays。

from pandas.tseries.offsets import BDay
date2 = date1 + pd.DateOffset(days=30)  # some of these dates may fall on weekends
date3 = date2 + 0*BDay()  # this nudges any weekend dates to the next occurring Monday

这不会影响工作日,但会将周末日期转换为下周日发生的日期。 (请注意,在这种情况下,“营业日”仅指周一至周五,没有任何类型的假期。)

资料来源:@ phil_20686对这个问题的回答:Pandas offset DatetimeIndex to next business if date is not a business day

© www.soinside.com 2019 - 2024. All rights reserved.