gpt4 book ai didi

python - 如何在 pandas 或 python 中分割特定范围的日期

转载 作者:太空宇宙 更新时间:2023-11-03 19:45:01 25 4
gpt4 key购买 nike

我有以下数据开始日期和结束日期,想编写一个在以下条件下分割日期的函数

1:以 3 个月的间隔进行分割。如果最后一次分割少于 2 个月.. 将日期范围添加到上一次分割(例如:第四次分割应为 2018-08-01 至 2018-09-23,并作为其不到 2 个月,所以它添加到上一行)

function should be like 
def (start_date=none ,end_date= none)


ex: if Start_date= 17-01-01 end_date -2018-09-23
Start_date end_date
2017-01-01 2017-03-31
2017-04-01 2017-06-31
2018-06-01 2018-09-23

提前致谢

最佳答案

我将使用 dateutil 库查找日期之间的 2 个月差异,并使用 datetime 库定义日期对象。

import datetime
from dateutil.relativedelta import relativedelta

假设输入是日期时间对象

start_date = datetime.date(2017,1,1)
end_date = datetime.date(2018,8,23)

我创建了一个列表来跟踪所有间隔的开始日期。

ls = []

我将把 start_date 追加到列表中,并使用 while 循环将 start_date 变量更新为增加 3 个月。

当您发现 end_date 与下一个 start_date 之差小于 2 个月时,请使用 relativedelta 函数打破循环。

您可以看到 if 条件是在 start_date 更新之后写入的。

while True:
ls.append(start_date)
start_date = start_date + relativedelta(months=3)
if end_date < start_date + relativedelta(months=2):
break
if start_date > end_date:
break

现在,除了最后一个元素之外,打印当前的 start_date 和比下一个 start_date 少 1 天的值。对于最后一个元素,打印 start_date 和 end_date。

print('start_date','end_date')
for i in range(len(ls)-1):
print(ls[i],ls[i+1]-datetime.timedelta(days=1))
print(ls[-1],end_date)

输出:

start_date end_date
2017-01-01 2017-03-31
2017-04-01 2017-06-30
2017-07-01 2017-09-30
2017-10-01 2017-12-31
2018-01-01 2018-03-31
2018-04-01 2018-08-23

关于python - 如何在 pandas 或 python 中分割特定范围的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60193214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com