在python中计算relativedelta的平均值

2024-03-28 23:14:23 发布

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

我在python3中有多个relativedelta值,我想取所有这些值的平均值。例如,对于下面的2个值,我想要一个relativedelta值,其中hours=+3天(两者之间的平均值)。在

relativedelta(days=+2, hours=+1, minutes=+33, seconds=+51)
relativedelta(hours=+4, minutes=+35, seconds=+36)

如何计算列表之间的平均值?如果有一种方法可以得到每个值的总小时数,我可以把它们加起来除以值的个数,然后除以24得到天数?在


Tags: 方法列表dayspython3平均值secondsrelativedelta天数
1条回答
网友
1楼 · 发布于 2024-03-28 23:14:23

dateutil中无法直接执行此操作。相反,您可以同时定位到datetime,并在锚定日期之间找到timedelta。以下数字以天表示,这是因为一天中有86400秒:

from dateutil.relativedelta import relativedelta
from datetime import datetime      
from statistics import mean

def avg_relativedelta(*relativedeltas):
    dates = (anchor - rd for rd in relativedeltas)
    tds = (anchor - date for date in dates)
    return mean(td.total_seconds() for td in tds) / 86400

i1 = relativedelta(days=2, hours=1, minutes=33, seconds=51)
i2 = relativedelta(hours=4, minutes=35, seconds=36)
i3 = relativedelta(days=6, minutes=10)

avg_relativedelta(i1, i2, i3)
# 2.7545023148148147

avg_relativedelta(i1, i2)
# 1.12828125

你需要从一个datetime中减去relativedelta,然后从相同的datetime中减去这个{},这有点不直观。但基本上这是一种将relativedelta转换成{}的方法,后者能够聚集其单位。在

或者:

^{pr2}$

相关问题 更多 >