Индексация данных Pandas с использованием индекса серии - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть TimeSeries, и я хочу извлечь три первых трех элемента и создать из них строку DataPrame Pandas с тремя столбцами. Я могу сделать это легко, используя словарь, например. Проблема в том, что я хотел бы, чтобы индекс этой строки DataFrame был индексом Datetime первого элемента Series. Здесь я терплю неудачу.

Для воспроизводимого примера:

              CRM
Date    
2018-08-30  0.000442
2018-08-29  0.005923
2018-08-28  0.004782
2018-08-27  0.003243

pd.DataFrame({'Reg_Coef_5_1' : ts1.iloc[0][0], 'Reg_Coef_5_2' : ts1.shift(-5).iloc[0][0], \
              'Reg_Coef_5_3' : ts1.shift(-10).iloc[0][0]}, index = ts1.iloc[0].index )

Я получаю:

     Reg_Coef_5_1   Reg_Coef_5_2    Reg_Coef_5_3
CRM   0.000442      0.001041        -0.00035

Вместо этого я бы хотел, чтобы индекс был 2018-08-30 объектом даты и времени.

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Если я вас правильно понял, вы бы хотели, чтобы индекс был объектом даты, а не "CRM", как в вашем примере. Просто установите индекс соответственно: index = [ts1.index[0]] вместо index = ts1.iloc[0].index.

df = pd.DataFrame({'Reg_Coef_5_1' : ts1.iloc[0][0], 'Reg_Coef_5_2' : ts1.shift(-5).iloc[0][0], \
              'Reg_Coef_5_3' : ts1.shift(-10).iloc[0][0]}, index = [ts1.index[0]] )

Но, как сказал пользователь 10300706, в конечном итоге может быть лучший способ сделать то, что вы хотите.

0 голосов
/ 03 сентября 2018

Если вы просто пытаетесь восстановить позицию индекса, выполните:

index = ts1.index[0]

Я хотел бы отметить, что если вы перемещаете свой фрейм данных постепенно (5/10 соответственно), индексы не будут совпадать. Я предполагаю, однако, вы пытаетесь построить какой-то запаздывающий индикатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...