PythonPandas系列

2024-03-29 13:40:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

成交价[日期1]

日期1

> 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的收盘价。所以我做了:

日期2=日期1+pd.日期偏移(天=30) 我的新服务如下:

成交价[日期2]

> 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

如你所见,有些日期不在营业日期,给我的名字是“南”。如果是这样的话,如果30天是在周末或假日,我怎么才能得到下一个营业日的价格呢?e、 g:2月26日的收盘价需要换成2月27日的收盘价。你知道吗


Tags: 价格nan名字pd股票收盘价营业营业日
1条回答
网友
1楼 · 发布于 2024-03-29 13:40:56

其中一个技巧是给每个日期加上30天,然后给每个日期加上0天。你知道吗

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_对这个问题的回答:Pandas offset DatetimeIndex to next business if date is not a business day

相关问题 更多 >