2017-02-24 1 views
2

Ich habe eine Reihe von Zeitstempeln von Größe 500 wie folge:Differenz in Jahren Array von Timestamp mit heute

>>>TimeStampArray[0] 
Timestamp('2017-02-20 14:00:19') 

I Zeitdifferenz jeden Element des Arrays mit dem heutigen Datum und repräsentieren diese Ausgabe finden wollen in Tagen.

z.B. TimeStampArray [0] - today() = 3 Tage

Ich habe versucht, pandas datetimeindex mit TimeStampArray zu verwenden, aber es wird immer noch nicht in ein Format konvertiert, auf das ich dann eine timedelta-Funktion anwenden kann.

Edit:

type(TimeStampArray.dtypes) 
<type 'numpy.dtype'> 

Kopf() geben error: 'numpy.ndarray' object has no attribute 'head'

ich gerade gedruckt gesamte Array und der Inhalt aussehen wie:

'2010-12-21T22:00:10.000000000', '2014-11-02T00:00:17.000000000', 
    '2014-07-14T15:00:11.000000000', '2010-12-31T12:00:18.000000000', 
    '2010-12-20T00:00:33.000000000', '2010-12-20T00:00:33.000000000'], dtype='datetime64[ns]') 
+0

Können Sie eine Ausgabe von 'Ausdrucken (TimeStampArray.head()); print (TimeStampArray.dtypes) ' – MaxU

Antwort

1

Ihre TimeStampArray scheint ein NumPy Array zu sein - IMO viel einfacher es ist mit Pandas Serie zu arbeiten:

In [178]: TimeStampArray 
Out[178]: 
array(['2010-12-21T22:00:10.000000000', '2014-11-02T00:00:17.000000000', '2014-07-14T15:00:11.000000000', '2010-12-31T12:00:18.000000000', ' 
2010-12-20T00:00:33.000000000', 
     '2010-12-20T00:00:33.000000000'], dtype='datetime64[ns]') 

In [179]: (pd.datetime.now() - pd.Series(TimeStampArray)).dt.days 
Out[179]: 
0 2256 
1  845 
2  956 
3 2247 
4 2258 
5 2258 
dtype: int64 
+1

Ich stimme auch zu Pandas ist der bessere Weg, Dinge zu tun. – Zanam

1

Ich glaube, Sie abs mit TimedeltaIndex.days verwenden können:

rng = pd.date_range('2015-02-24', periods=10).values 
print (rng) 
['2015-02-24T00:00:00.000000000' '2015-02-25T00:00:00.000000000' 
'2015-02-26T00:00:00.000000000' '2015-02-27T00:00:00.000000000' 
'2015-02-28T00:00:00.000000000' '2015-03-01T00:00:00.000000000' 
'2015-03-02T00:00:00.000000000' '2015-03-03T00:00:00.000000000' 
'2015-03-04T00:00:00.000000000' '2015-03-05T00:00:00.000000000'] 

today = pd.datetime.now() 
print (today) 
2017-02-24 22:09:25.162455 

print (abs(pd.DatetimeIndex(rng) - today).days) 
[731 730 729 728 727 726 725 724 723 722] 
+0

Dies ergibt einen Fehler wie: TypeError: ufunc subtract kann keine Operanden mit den Typen dtype (' Zanam

+0

Bitte editierte Antwort. – jezrael

+0

Sie brauchen nicht die "Runde". Siehe MarkU-Syntax. Vielen Dank. – Zanam

Verwandte Themen