列表中的平均时间值

shi*_*inn 16 python

我想计算列表中日期之间的平均时间值.虽然以下效果很好,但我想知道是否有更聪明的方法?

delta = lambda last, next: (next - last).seconds + (next - last).days * 86400   
total = sum(delta(items[i-1], items[i]) for i in range(1, len(items)))
average = total / (len(items) - 1)
Run Code Online (Sandbox Code Playgroud)

Joc*_*zel 43

顺便说一下,如果你有一个timedeltas或datetimes列表,你为什么自己做数学?

datetimes = [ ... ]

# subtracting datetimes gives timedeltas
timedeltas = [datetimes[i-1]-datetimes[i] for i in range(1, len(datetimes))]

# giving datetime.timedelta(0) as the start value makes sum work on tds 
average_timedelta = sum(timedeltas, datetime.timedelta(0)) / len(timedeltas)
Run Code Online (Sandbox Code Playgroud)

  • +1因为OP和我都不知道这是可能的.datetime废话比字符串更无聊;) (3认同)
  • 在这个例子中,它应该是`datetimes [i] -datetimes [i-1]` (2认同)

小智 8

如果您有一个时间增量列表:

import pandas as pd
avg=pd.to_timedelta(pd.Series(yourtimedeltalist)).mean()
Run Code Online (Sandbox Code Playgroud)