[Timestamp('2008-01-25 00:00:00'), Timestamp('2008-01-31 00:00:00'),
Timestamp('2008-01-31 00:00:00'), Timestamp('2008-01-09 00:00:00'),
Timestamp('2008-01-17 00:00:00')]
我在上面的Python中有一个时间戳列表。如何找到中位数时间戳?
答案 0 :(得分:3)
假设您使用pandas
,这将有效:
import pandas as pd
from pandas import Timestamp
ser = pd.Series([Timestamp('2008-01-25 00:00:00'),
Timestamp('2008-01-31 00:00:00'),
Timestamp('2008-01-31 00:00:00'),
Timestamp('2008-01-09 00:00:00'),
Timestamp('2008-01-17 00:00:00')])
pd.Timestamp.fromordinal(int(ser.apply(lambda x: x.toordinal()).median()))
结果:
Timestamp('2008-01-25 00:00:00')
答案 1 :(得分:1)
如果您使用 Python 3.4或更新版,则无需实现自己的median
功能。
标准库中的statistics包已包含median函数。包括电池!
所以,假设你有一个可排序的时间戳序列,你可以这样做:
statistics.median(timestamps)
答案 2 :(得分:0)
通常时间戳是数值,因此计算(数学)中位数并不太难。
>>> t = [Timestamp('2008-01-25 00:00:00'), Timestamp('2012-01-25 00:00:00')]
>>> t
[1201215600.0, 1327446000.0]
>>> mid = sum(t)/len(t)
>>> datetime.datetime.fromtimestamp(mid)
datetime.datetime(2010, 1, 24, 12, 0)