Панды, фрейм данных set_index и переиндексация

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

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

person Dick Eshelman    schedule 27.03.2013    source источник


Ответы (1)


Переиндексация только по временным рядам (1D) или как по сериям работает (в 0.10.1):

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

.

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

person Andy Hayden    schedule 28.03.2013
comment
Энди, я запустил оба предложенных вами метода и не получил никакой переиндексации. Строки даты 10-02-10 и 10-03-10 не отображаются в кадре данных data_1 между 10-01-13 и 10-04-10 ни одним из методов, чего я и ожидал. - person Dick Eshelman; 28.03.2013
comment
@DickEshelman Какую версию панд вы используете? 0.10.1 появляются эти даты. (Я скопировал ваш первый DataFrame в буфер обмена и использовал data_1 = pd.read_clipboard(sep=' ', header=None, parse_dates=[0]).set_index(0).) - person Andy Hayden; 28.03.2013
comment
Энди, после твоего ответа я обновился до 0.10.1. Из-за других попыток заставить это работать, я думаю, что есть некоторое взаимодействие с читателем Pandas CSV. Я не смог получить те же результаты, что и вы, с буфером обмена. Не могли бы вы попробовать то же самое, используя ридер? Буфер обмена попробую. - person Dick Eshelman; 28.03.2013
comment
read_clipboard должен быть эквивалентен read_csv, вы анализируете даты с помощью parse_dates=[0]? - person Andy Hayden; 28.03.2013
comment
Спасибо, Энди. Ваши прочитанные параметры являются ключевыми, без set_index(0) переиндексация не будет работать. - person Dick Eshelman; 29.03.2013