我有一个熊猫数据(股票价格)和一个日期格式的指数。它是每日的,但只适用于工作日。我基本上试着计算一些价格表现,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()中的一年)。我可以提取月份和年份,但那样就不那么精确了。有什么建议吗?
谢谢
发布于 2017-12-14 23:24:21
由于您没有提供任何数据,所以我假设您有一个日期列表(字符串类型),如下所示:
dates = ['11/01/2016', '12/01/2016', '02/01/2017', '03/01/2017']然后,您需要将其转换为日期时间格式,我建议您使用熊猫:
pd_dates = pd.to_datetime(dates)那么你必须定义今天和一年前。我建议在这方面使用日期时间:
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]这将返回比一年前日期更大的第一个日期。
输出:
Timestamp('2017-02-01 00:00:00')可以使用以下代码将该datetime值转换为字符串:
datetime.strftime(pd_dates[pd_dates > date_1yr_ago][0], '%Y/%m/%d')输出:
'2017/02/01'https://stackoverflow.com/questions/47823271
复制相似问题