2017-01-12 7 views
-4
[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でタイムスタンプのリストを持っています。メジアンタイムスタンプはどのようにして見つけられますか?Pythonの中央タイムスタンプを見つける

+3

を?私。 'Timestamp'クラスはどこに定義されていますか? – DanielGibbs

答えて

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

あなたはのPython 3.4または以降を使用している場合は、あなた自身のmedian機能を実装する必要はありません。

標準ライブラリのstatisticsパッケージにはすでにmedian機能が含まれています。付属のバッテリー!


ので、あなたは、タイムスタンプのソート可能なシーケンスを持っていると仮定すると、あなただけ行うことができます:あなたはから `Timestamp`sを取得している

statistics.median(timestamps) 
+0

@Coreyに感謝します。私はあなたのsolnを受け入れていましたが、Python 2.7を使用しています。 – user308827

関連する問題