我有一个带有日期格式索引的熊猫数据框(股票价格)。这是每天,但仅限于工作日。 我基本上试图计算一年前的一些价格表现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()一年)。我可以提取月份和年份,但它不会那么准确。有什么建议吗?
由于
答案 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'