如何使用for循环(或更好的方法)更改DateTime中的一个月?

2024-04-19 08:22:16 发布

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

用适当的MCVE修改问题:

作为我正在编写的脚本的一部分,我需要有一个循环,在每个迭代过程中包含一对不同的日期,这些日期是每个月的第一个和最后一个可用的股票交易日期。我已经设法在索引中找到了一个包含可用日期的日历,但是尽管我进行了研究,但我不确定如何从该索引中选择正确的日期,以便它们可以用于日期时间变量startend。 以下是我的研究成果,我将继续寻找并构建我自己的解决方案,如果我找到了,我将发布:

from __future__ import division
import numpy as np
import pandas as pd
import datetime
import pandas_market_calendars as mcal
from pandas_datareader import data as web
from datetime import date
'''
Full date range:
'''
startrange = datetime.date(2016, 1, 1)
endrange = datetime.date(2016, 12, 31)
'''
Tradable dates in the year:
'''
nyse = mcal.get_calendar('NYSE')
available = nyse.valid_days(start_date='2016-01-01', end_date='2016-12-31')
'''
The loop that needs to take first and last trading date of each month:
'''
dict1 = {}
for i in available:
    start = datetime.date('''first available trade day of the month''')
    end = datetime.date('''last available trade day of the month''')
    diffdays = ((end - start).days)/365
    dict1 [i] = diffdays
    print (dict1)

Tags: oftheinfromimportpandasdatetimedate
1条回答
网友
1楼 · 发布于 2024-04-19 08:22:16

这可能是因为2016年1月1日不是交易日。为了验证我的判断是否正确,请尝试将日期定为2016年1月4日,也就是下周一。如果这样做有效的话,那么你就必须对你要求的日期更加老练。你知道吗

在文档中查找dm.BbgDataManager()。你可以问它有什么日期。你知道吗

相关问题 更多 >