Как узнать смещение Timeindex в другом фрейме данных? - PullRequest
0 голосов
/ 25 мая 2020

У меня 2 фрейма данных. У первого есть Timeindex и Timecolumn. У второго есть Timeindex, но его столбцы не имеют значения.

Оба timeindex отсортированы по временному порядку, но не имеют регулярности внутри. (например, праздники или указанные c даты опущены)

Теперь мне нужно сбросить столбец Time первого Dataframe на «одну позицию назад во втором Df's-TimeIndex».

Мне также нужно сбросить Time Index первого Dataframe на «одну позицию назад во втором Df's-TimeIndex».

first df
                                     t1
2014-10-13 00:00:00 2014-10-13 00:00:00
2014-10-14 00:00:00 2014-10-14 00:00:00
2014-10-15 00:00:00 2014-10-15 00:00:00
2014-10-16 00:00:00 2014-10-16 00:00:00
2014-10-17 00:00:00 2014-10-17 00:00:00
                                ...
2016-02-22 16:00:00 2016-02-23 14:00:00 # in this later samples u can see
2016-02-22 17:00:00 2016-02-23 14:00:00 # that there is no common pattern
2016-02-22 18:00:00 2016-02-23 14:00:00
2016-02-22 19:00:00 2016-02-22 19:00:00
2016-02-22 20:00:00 2016-02-22 20:00:00

[604 rows x 1 columns]
second df:
                          Val       
Time                                                          
2014-10-10 00:00:00       ...  
2014-10-13 00:00:00       ...
2014-10-14 00:00:00       ...  
2014-10-15 00:00:00       ...
2014-10-16 00:00:00       ...  
                      ...       ...  ...            ...            ...
2016-02-23 16:00:00       ...
2016-02-23 17:00:00       ...   
2016-02-23 18:00:00       ... 
2016-02-23 19:00:00       ...   
2016-02-23 20:00:00       ...

ожидаемый результат:

Это похоже на то, что я хочу получить numberLocation ValueColumn из первого Dataframe -> в TimeIndex второго Dataframe, а затем вычесть 1 из этого numberIndex, чтобы он был «сдвинут назад» с точки зрения второго индекс df. Затем получите значения TimeIndex для второго df, которые расположены в новом numberIndex, чтобы заполнить ими ValueColumn первого индекса.


                                     t1
2014-10-13 00:00:00 2014-10-10 00:00:00
2014-10-14 00:00:00 2014-10-13 00:00:00
2014-10-15 00:00:00 2014-10-14 00:00:00
2014-10-16 00:00:00 2014-10-15 00:00:00
2014-10-17 00:00:00 2014-10-16 00:00:00
                                ... 

1 Ответ

0 голосов
/ 26 мая 2020

Вы можете использовать оператор сдвига:

df1 = df1.shift(1)

, а затем сопоставить индекс

df2.index = df2.index.map(df1.t1)

Первая строка в t1 будет иметь значение NAN, поэтому вы хотите сохранить это вых.

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