2017-05-22 4 views
1

Ich habe eine Sparse Pandas-Serie. Zur Veranschaulichung erstellen wir eine Mock-Serie, ts2.Erstellen Sie eine neue Pandas-Serie von vorne füllen eine spärliche Serie

import pandas as pd 
idx2 = pd.date_range('2016-01-29', '2016-02-27', freq='W') 
ts2 = pd.Series(data=[11, 9, 13, 4], index=idx2) 

die wie

2016-01-31 11 
2016-02-07  9 
2016-02-14 13 
2016-02-21  4 

sieht Ich möchte ts2 nutzen, um (über zukunftsFüllung) zu schaffen eine neue Serie, die einen anderen Zeitbereich hat, sagen

idx1 = pd.date_range('2016-02-01', '2016-02-28', freq='D') 

Die neue Zeitreihe sollte folgendermaßen aussehen:

2016-02-01 11 
2016-02-02 11 
2016-02-03 11 
2016-02-04 11 
2016-02-05 11 
2016-02-06 11 
2016-02-07 9 
2016-02-08 9 
... 
2016-02-08 4 

Was ist ein guter Weg, dies zu tun? Beachten Sie, dass die Daten von idx1 und idx2 nicht übereinstimmen. Um das 2016-02-01 in idx1 zu füllen, müssen Sie den Wert 2016-01-31 in ts2 nachschlagen.

EDIT: Ich sollte erwähnen, dass idx1 nicht täglich sein könnte, aber könnte eine Sammlung von Daten wie Wochentage minus Feiertage in Norwegen oder etwas sein.

+0

Können Sie die idx1 bearbeiten Sie die min() Wert in ts2 Index zu verweisen? Oder verbietet das etwas? –

+0

Im Allgemeinen ist idx1 nicht täglich. – Spinor8

Antwort

0

EDIT: wenn idx1 hat spezielle fehlende Tage oder Ferien

Verwendung reindex mit method='ffill':

ts2.reindex(idx1, method='ffill') 

Ausgang:

2016-02-01 11 
2016-02-02 11 
2016-02-03 11 
2016-02-04 11 
2016-02-05 11 
2016-02-06 11 
2016-02-07  9 
2016-02-08  9 
2016-02-09  9 
2016-02-10  9 
2016-02-11  9 
2016-02-12  9 
2016-02-13  9 
2016-02-14 13 
2016-02-15 13 
2016-02-16 13 
2016-02-17 13 
2016-02-18 13 
2016-02-19 13 
2016-02-20 13 
2016-02-21  4 
2016-02-22  4 
2016-02-23  4 
2016-02-24  4 
2016-02-25  4 
2016-02-26  4 
2016-02-27  4 
2016-02-28  4 
Freq: D, dtype: int64 

ODER wenn idx1 nur ein täglicher Zuwachs ist.

Verwenden resample und ffill:

ts2.resample('D').ffill() 

Ausgang:

2016-01-31 11 
2016-02-01 11 
2016-02-02 11 
2016-02-03 11 
2016-02-04 11 
2016-02-05 11 
2016-02-06 11 
2016-02-07  9 
2016-02-08  9 
2016-02-09  9 
2016-02-10  9 
2016-02-11  9 
2016-02-12  9 
2016-02-13  9 
2016-02-14 13 
2016-02-15 13 
2016-02-16 13 
2016-02-17 13 
2016-02-18 13 
2016-02-19 13 
2016-02-20 13 
2016-02-21  4 
Freq: D, dtype: int64 
+0

Danke, aber das hat nicht den gleichen Index wie idx1. Nun, im obigen Fall war es täglich, aber idx1 konnte nur an Wochentagen mit Ausnahme von Feiertagen sein. – Spinor8

+0

@ Spinor8 Siehe bearbeiten mit der Verwendung wenn Idx mit Methode 'ffill'. –

+0

Ich denke, das Problem ist "idx1" enthält nicht das min() Datum von 'ts2.index', daher kann der Wert nicht vorwärts gefüllt werden. Es ist möglich, dass ich das falsch interpretiere. –

Verwandte Themen