2013-06-06 17 views
7

Mam 2 ramki danych z identycznymi kolumnami, ale różne indeksy datetime. Chcę ponownie pobrać próbkę jednego z nich, aby użyć indeksu innych danych do wypełnienia i naprzód z jednego z dat w indeksie drugiego, w którym nie było danych.Resample a seria czasowa z indeksem innej serii czasowej

import pandas as pd 
import numpy as np 
from datetime import datetime as dt 

a_values = np.random.randn(4, 4) 
a_index = [dt(2012, 3, 16), dt(2012, 3, 19), dt(2012, 3, 20), dt(2012, 3, 21)] 
a = pd.DataFrame(data=a_values, index=a_index) 

b_values = np.trunc(np.random.randn(3, 4) * 1000) 
b_index = [dt(2012, 3, 16), dt(2012, 3, 19), dt(2012, 3, 21)] 
b = pd.DataFrame(data=b_values, index=b_index) 

c_insert = a.ix['2012-03-20'] 
c = b.append(c_insert).sort() 
c.ix['2012-03-20'] = c.ix['2012-03-19'] 

'a' reprezentuje ramkę danych, której indeks chciałbym użyć jako referencję do ponownego próbkowania. "b" reprezentuje ramkę danych, którą chciałbym powtórzyć i przekazać dane dotyczące wypełnienia. "c" reprezentuje to, co chciałbym, aby wyniki wyglądały.

Zauważ, że "b" brakuje indeksu "2012-03-20", który istnieje w "a". "c" wypełnia kolumny dla indeksu "2012-03-20" danymi w kolumnach z "b" dla indeksu "2012-03-19"

Czy pandy mają taką funkcję, aby to zrobić.

Z góry dziękuję.

pir

Odpowiedz

5

Aby ponowne próbkowanie przez indeks odniesienia użyć reindex.

In [11]: b.reindex(a.index, method='ffill') 
Out[11]: 
       0  1  2  3 
2012-03-16 -926 -625 736 457 
2012-03-19 -1024 742 732 -1020 
2012-03-20 -1024 742 732 -1020 
2012-03-21 1090 -1163 1652 -94 
+4

Można również użyć: 'b.reindex_like (a, method = 'ffill')'. –

Powiązane problemy