python - Pandas Datetime:将开始日期和结束日期拆分为 n 个月的折叠
问题描述
假设您有两个 pandas 日期时间:from_date
和end_date
. 我需要一个将其拆分为数n
月的函数(比如说n=3
)。例如:
import pandas as pd
from_date = pd.to_datetime("2020-02-15")
to_date = pd.to_datetime("2020-05-20")
应该分成2折:
{
"1": {"from_date": 2020-02-15, "to_date": 2020-05-15},
"2": {"from_date": 2020-05-16, "to_date": 2020-05-20}
}
每个折叠需要满足条件:
from_date + pd.DateOffset(months=2) >= end_date
. 因此,这与开始日期和结束日期之间的天数无关。
最pythonic的方法是什么?熊猫有什么东西吗?
解决方案
根据您希望使用 2 个日期的方式替换相应的打印语句!
根据如何使用 datetime Python 模块计算距当前日期六个月的日期?,dateutil.relativedelta
可以帮助解决那些有和没有第 31 天的月份!
import pandas as pd
from dateutil.relativedelta import relativedelta
from_date = pd.to_datetime("2020-02-15")
to_date = pd.to_datetime("2020-05-20")
fold = 0
result = {}
while from_date+relativedelta(months=+3)<to_date:
curfrom = from_date #retain current 'from_date'
from_date =from_date+relativedelta(months=+3)
result[fold] = {"from_date": curfrom, "to_date": from_date}
fold = fold+1
from_date = from_date + relativedelta(days=+1) #So that the next 'from_date' starts 1 day after
result[fold] = {"from_date": curfrom, "to_date": to_date}
print(result)
推荐阅读
- arrays - 通过添加 JsonObject 创建 JsonArray
- python - 如何使用 numpy 数组正确调用`__rsub__`?
- python - Python - 透视数据框
- arrays - 如何在红宝石的刺中添加“-”
- database - 累积销售量度 - FILTER ( ALL('Date'), 'Date'[Date] <= MAX('Date'[Date] ))
- sql-server - SQL 存储过程中的对象名称无效
- reactjs - 在一行中获取按钮和输入字段
- c# - 为什么我无法使用我的种子用户 C#、迁移种子、身份、核心 3 登录
- amazon-web-services - Cloudformation 发送参数以启动配置启动脚本
- javascript - 在 React 模块中测试 SweetAlert2 的 preConfirm 钩子