Python日期索引:从今天开始查找一年前最近的日期

时间:2017-12-14 22:44:59

标签: python pandas date datetime dataframe

我有一个带有日期格式索引的熊猫数据框(股票价格)。这是每天,但仅限于工作日。 我基本上试图计算一年前的一些价格表现YTD。 要在我的数据框中获取实际年份的第一个日期,我使用了以下方法:

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()一年)。我可以提取月份和年份,但它不会那么准确。有什么建议吗?

由于

1 个答案:

答案 0 :(得分:1)

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

dates = ['11/01/2016', '12/01/2016', '02/01/2017', '03/01/2017']

然后你需要将其转换为datetime格式,我建议使用pandas:

pd_dates = pd.to_datetime(dates)

然后你必须在今天和一年前定义。我建议使用datetime:

today = datetime.today()
date_1yr_ago = datetime(today.year-1, today.month, today.day)

最后,您将日期列表切割为大于date_1yr_ago值的日期,并获取该切片的第一个值:

pd_dates[pd_dates > date_1yr_ago][0]

这将返回大于1年前日期的第一个日期。

<强>输出:

Timestamp('2017-02-01 00:00:00')

您可以使用以下代码将该日期时间值转换为字符串:

datetime.strftime(pd_dates[pd_dates > date_1yr_ago][0], '%Y/%m/%d')

<强>输出:

'2017/02/01'