首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:找到一年前从今天开始最接近的日期

:找到一年前从今天开始最接近的日期
EN

Stack Overflow用户
提问于 2017-12-14 22:44:58
回答 1查看 1.6K关注 0票数 0

我有一个熊猫数据(股票价格)和一个日期格式的指数。它是每日的,但只适用于工作日。我基本上试着计算一些价格表现,YTD和一年前。为了在数据中获得实际年份的第一个日期,我使用了以下方法:

代码语言:javascript
复制
today = str(datetime.date.today())
curr_year = int(today[:4])
curr_month = int(today[5:7])
first_date_year = (df[str(curr_year)].first_valid_index())

现在,我尝试获得一年前最接近的日期(正好是last_valid_index()中的一年)。我可以提取月份和年份,但那样就不那么精确了。有什么建议吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-14 23:24:21

由于您没有提供任何数据,所以我假设您有一个日期列表(字符串类型),如下所示:

代码语言:javascript
复制
dates = ['11/01/2016', '12/01/2016', '02/01/2017', '03/01/2017']

然后,您需要将其转换为日期时间格式,我建议您使用熊猫:

代码语言:javascript
复制
pd_dates = pd.to_datetime(dates)

那么你必须定义今天和一年前。我建议在这方面使用日期时间:

代码语言:javascript
复制
today = datetime.today()
date_1yr_ago = datetime(today.year-1, today.month, today.day)

最后,对大于date_1yr_ago值的日期列表进行切片,并获得该切片的第一个值:

代码语言:javascript
复制
pd_dates[pd_dates > date_1yr_ago][0]

这将返回比一年前日期更大的第一个日期。

输出:

代码语言:javascript
复制
Timestamp('2017-02-01 00:00:00')

可以使用以下代码将该datetime值转换为字符串:

代码语言:javascript
复制
datetime.strftime(pd_dates[pd_dates > date_1yr_ago][0], '%Y/%m/%d')

输出:

代码语言:javascript
复制
'2017/02/01'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47823271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档