2013-03-27 3 views
3

Я хочу читать данные в будние дни, а затем переиндексировать данные, чтобы заполнить выходные данные пятницы. Я пробовал следующий код, но он не будет переиндексировать данные. Set_index создает сообщение об ошибке длины.Pandas, Data Frame set_index & reindexing

import pandas as pd 

def fill_dataframe(filename): 
    dataf = pd.read_csv(filename, header= None, index_col = [0]) 
return(dataf) 

rng = pd.date_range('10/1/2010', periods=61) 
date_rng = pd.DataFrame(rng,index = rng) 

data_1.reindex(date_rng, method = 'ffill') 

Данные, считываемые внутри, имеют 41 строку, а сгенерированные значения даты имеют 61 строку. Какие-либо предложения?

data read in by csv (1st 7 rows) 
     X0  X1 
10/1/2010 71.27 
10/4/2010 70.33 
10/5/2010 72.94 
10/6/2010 74.15 
10/7/2010 71.40 
10/8/2010 72.58 
10/11/2010 72.66 

dates generated by rng in the second Data Frame (first 11 rows) 
         0 
2010-10-01 2010-10-01 00:00:00 
2010-10-02 2010-10-02 00:00:00 
2010-10-03 2010-10-03 00:00:00 
2010-10-04 2010-10-04 00:00:00 
2010-10-05 2010-10-05 00:00:00 
2010-10-06 2010-10-06 00:00:00 
2010-10-07 2010-10-07 00:00:00 
2010-10-08 2010-10-08 00:00:00 
2010-10-09 2010-10-09 00:00:00 
2010-10-10 2010-10-10 00:00:00 
2010-10-11 2010-10-11 00:00:00 

ответ

3

индексирование этого только с помощью (1D) таймсерий или в качестве серии это работает (в 0.10.1):

data_1.reindex(rng, method = 'ffill') 
data_1.reindex(Series(rng, index=rng), method = 'ffill') 

.

С date_rng как DataFrame я получаю TypeError: Невозможно сравнить Timestamp с 0, я подозреваю, что это может быть ошибка, но я не совсем уверен, что ожидаемое поведение должно быть ...

+0

Энди, Я запустил оба метода, которые вы предлагали, и не получил переиндексации. Строки даты 10-02-10 и 10-03-10 не отображаются в Data Frame data_1 между 10-01-13 и 10-04-10 под любым способом, что я и ожидал. –

+1

@DickEshelman Какую версию панд вы используете? 0.10.1 появляются эти даты. (Я скопировал ваш первый DataFrame в буфер обмена и использовал 'data_1 = pd.read_clipboard (sep = '', header = None, parse_dates = [0]). Set_index (0)'.) –

+0

Andy, я обновился до 0.10.1 после Ваш ответ. Из-за других попыток заставить это работать, я думаю, что есть некоторое взаимодействие с читателем Pandas CSV. Я не смог получить те же результаты, что и в буфере обмена. Не могли бы вы попытаться сделать то же самое с помощью читателя? Я попробую буфер обмена. –

Смежные вопросы