2017-06-08 4 views
0

Mit zwei Zeitreihen wie:Einstellen der DatetimeIndex-Frequenz, stimmt das?

import pandas 
from numpy import nan 


# 1-minute period 
index = pandas.date_range('1/1/2010', periods=8, freq='T') 
series1 = pandas.Series([1., nan, nan, nan, nan, 2., nan, nan], index=index) 

# 5-minutes period 
index = pandas.date_range('1/1/2010', periods=2, freq='5T') 
series5 = pandas.Series([1., 2.], index=index) 

Einer von ihnen ist 1-Minuten-Basis, die andere 5-Minuten. Sie haben beide die gleichen Werte (ausgenommen nan) bei den gleichen Zeitstempeln.

Ich möchte nicht nan Werte beibehalten, damit ich sie fallen lasse. Doch auch sie fallen fällt die Frequenzinformation aus dem DatetimeIndex:

series1 = series1.dropna() 
print(series1.index.freq) 

Nun, ich würde wirklich in der Lage sein mögen zwei Serien differenciate wie diese: gleiche Zeitstempel, gleiche Werte, aber aus verschiedenen Grundfrequenzen stammen.

Um dies zu tun, ich die Frequenz zurück "von Hand" gesetzt:

from pandas.tseries.frequencies import to_offset 


series.index.freq = to_offset('T') 

Frage (n):

  • gehen Kann man etwas falsch gemacht? (d. h .: Pandas erwartet vielleicht, dass diese Frequenz nur für Serien mit vollständigen/gefüllten Indizes gesetzt wird)
  • Wenn ja, wie sonst sollte ich diese Informationen speichern?
+1

@ scott-boston Ich nehme an, die 'series1.dropna()' '' die 'freq' aus dem Index, denn wenn Sie Zeilen aus dem' DataFrame' löschen, wird es nicht habe eine feste Frequenz –

Antwort

0

Kurz gesagt: Es gibt keinen guten Weg, diese Informationen in der Serie selbst zu verfolgen, die ich kenne. Hier sind ein paar Alternativen:

Serie Attribute

Sie Ihr eigenes Attribut zu der Serie hinzufügen. Seien Sie gewarnt, dass diese nicht aufrechterhalten werden, wenn die Series Kopieren oder Hinzufügen zu einem Datenrahmen

series1._myfreq = 'T' 
series5._myfreq = '5T' 

Index Name

gleiche Einschränkung wie für die Attribute

series1.index.name = 'T' 
series5.index.name = '5T' 

Außerhalb des Series

Durch Auswählen eines geeigneten Variablennamens können Sie sie unterscheiden, oder Sie können die Serie in einer dict mit der 0 beibehaltenals eines der anderen Elemente des Dict

+0

Danke für deine Antwort. Meine Frage war jedoch eher: "Gibt es ein Problem bei der Verwendung des eigentlichen Parameters' series.index.freq', um diese Informationen zu speichern? (ZB: könnte das zu unerwarteten Problemen/Verhalten führen, wenn die Serie einen Index mit "Löchern" hat wie in diesem Fall?) – Peque

+0

Ich weiß nicht, ob einige Algorithmen diese '.freq 'intern verwenden. Sie könnten in der Pandas-Quelle danach suchen oder ein Problem auf ihrer Github-Seite öffnen –

Verwandte Themen