【问题标题】:Finding median time stamp in python在python中查找中值时间戳
【发布时间】:2017-01-12 21:45:30
【问题描述】:
[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 中有一个时间戳列表。如何找到中间时间戳?

【问题讨论】:

  • 你从哪里得到Timestamps? IE。 Timestamp 类在哪里定义?

标签: python date


【解决方案1】:

假设您使用 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')

【讨论】:

    【解决方案2】:

    如果您使用的是Python 3.4 或更新版本,则无需实现自己的median 函数。

    标准库中的statistics 包已经包含median 函数。包括电池!


    所以,假设您有一个可排序的时间戳序列,您可以这样做:

    statistics.median(timestamps)
    

    【讨论】:

    • 感谢@Corey,我会接受你的解决方案,除非我使用 python 2.7 :(
    【解决方案3】:

    通常时间戳是数值,因此计算(数学)中位数并不难。

    >>> 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)
    

    【讨论】:

      猜你喜欢
      • 2019-02-25
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2017-10-28
      • 2015-04-20
      • 2023-01-12
      相关资源
      最近更新 更多