如何解决Python 中财务相关任务的日期时间使用
我是 Python 的完全初学者,这是我在 Stackoverflow 上的第一个问题。我在 youtube 上尝试了许多教程 + 一些额外的谷歌搜索,但还没有真正能够完全解决我的任务。简单地把它放在asf下面:
我们有未来 12-36 个月的期货价格(价值)数据集。每个值对应未来一个月。代码的想法是输入以下内容:
- 以天为单位的开始日期(例如 2021 年 2 月 2 日或任何其他日期)
- 指定天数的持续时间(例如 95 天或 150 天或 425 天)
- 代码必须计算每个给定月份从开始日期到结束日期(即开始 + 持续时间)之间的天数,然后使用相应月份的适当值来计算该特定持续时间的平均价格。
示例: 开始日期为 2021 年 2 月 2 日,持续时间为 95 天(结束日期为 5 月 8 日)。值为二月 - 7750、三月 - 9200、四月 - 9500、五月为 10100。
我已经设法在 Excel 中做同样的事情(它非常笨拙且太复杂,无法每天使用),考虑到上述所有内容,平均值约为 8949。但我无法弄清楚如何在 Python 中以每月的天数编写相同的“间隔”。所有的文章都只是简单地指出了“monthrange”功能,但如何将其应用于此任务?
感谢您对新手问题的理解,对于缺乏更清晰地表达/解释我的想法的知识感到抱歉。
期待任何与上述相关的帮助。
解决方法
您可以使用 for
来构建您的代码。如果您需要进一步的帮助,只需点击代码中的 ctrl + tab 即可查看输入及其用法。
你可以试试下面的代码。
-
input_start_date() 函数将输入开始日期,并在调用时返回。
-
获得开始日期后,我们输入天数。
-
然后我们只需使用 timedelta
添加它们 -
对于月份中的天数分布:SO - @wwii
import datetime
from datetime import timedelta
def input_start_date():
YEAR = int(input('Enter the year : '))
MONTH = int(input('Enter the month : '))
DAY = int(input('Enter the day : '))
DATE = datetime.date(YEAR,MONTH,DAY)
return DATE
# get the start date:
Start_date = input_start_date()
# get the Duration
Duration = int(input('Enter the duration : '))
print('Start Date : ',Start_date)
print('Duration :',Duration)
# final date.
Final_date = Start_date + timedelta(days=Duration)
print(Final_date)
# credit goes to @wwii -----------------------
one_day = datetime.timedelta(1)
start_dates = [Start_date]
end_dates = []
today = Start_date
while today <= Final_date:
tomorrow = today + one_day
if tomorrow.month != today.month:
start_dates.append(tomorrow)
end_dates.append(today)
today = tomorrow
end_dates.append(Final_date)
# -----------------------------------------------
print("Distribution : ")
for i in range(len(start_dates)):
days = int(str(end_dates[i]-start_dates[i]).split()[0]) + 1
print(start_dates[i],' to ',end_dates[i],' = ',days)
print(str(end_dates[0]-start_dates[0]))
'''
Distribution :
2021-02-02 to 2021-02-28 = 27
2021-03-01 to 2021-03-31 = 31
2021-04-01 to 2021-04-30 = 30
2021-05-01 to 2021-05-08 = 8
'''
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。