首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >开始日期和结束日期之间每年的天数(Python)

开始日期和结束日期之间每年的天数(Python)
EN

Stack Overflow用户
提问于 2022-01-11 01:39:05
回答 1查看 70关注 0票数 0

我有一个过程,我运行在一个木星笔记本,在其中一个步骤,一个计算,基本上是说什么数额的贷款,并分散了多年来,每天。因此,假设一笔贷款从'2024-04-01‘开始,到'2028-04-01’结束,它将在2024年(从4月起)和2028年(从年初到4月)应用部分权责发生制,以及其他年份的全部金额。

我希望改进的地方是动态生成年度数据,而不是在下面的过程中专门定义每年的数据。我想要保持的是定义开始/结束的年份,因为会计年度可能与日历年不同。任何输入都是非常感谢的,如果你看到一个更简单的方法来实现我写的东西,我会非常感激的。

代码语言:javascript
运行
复制
data['2024 Year Start'] = datetime.strptime('2024-01-01', '%Y-%m-%d')
data['2024 Year End'] = datetime.strptime('2024-12-31', '%Y-%m-%d')
data['2024 Days'] = pd.to datetime(data[['2024 Year End'], ['Last Loan Date']].min(axis=1)) - pd.to_datetime(data[['2024 Year Start', 'Loan From Date']].max(axis=1))
data['2024 Days'] = data['2024 Days'].astype('timedelta64[D]')-0
data['2024 Accrual'] = np.where((data['Last Loan Date'] >= data['2024 Year Start'])
            & (data['Loan From Date'] < data['2024 Year End']),
            data[ 'Daily Accrual'] * data['2024 Days'],
            0)

data['2025 Year Start'] = datetime.strptime('2025-01-01', '%Y-%m-%d')
data['2025 Year End'] = datetime.strptime('2025-12-31', '%Y-%m-%d')
data['2025 Days'] = pd.to datetime(data[['2025 Year End'], ['Last Loan Date']].min(axis=1)) - pd.to_datetime(data[['2025 Year Start', 'Loan From Date']].max(axis=1))
data['2025 Days'] = data['2025 Days'].astype('timedelta64[D]')-0
data['2025 Accrual'] = np.where((data['Last Loan Date'] >= data['2025 Year Start'])
            & (data['Loan From Date'] < data['2025 Year End']),
            data[ 'Daily Accrual'] * data['2025 Days'],
            0)
EN

回答 1

Stack Overflow用户

发布于 2022-01-11 09:18:35

这个怎么样:

代码语言:javascript
运行
复制
from dateutil.relativedelta import relativedelta

# fiscal year settings
m_start = 3
d_start = 15

for y in range(2021,2028):
    year_start = datetime(year=y, month=m_start, day=d_start)
    year_end = year_start + relativedelta(years=1,days=-1)
    # if you like, put it in data cols
    data[str(y)+' Year Start'] = year_start
    data[str(y)+' Year End'] = year_end

如果有必要,可以使用动态生成的字符串(如上面的'str(y)‘)作为键来计算其余部分。如果这不是您所需要的,也许您可以给我们一些源数据和期望的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70660710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档