Объединить два кадра данных (разных размеров) на основе индекса даты и времени - PullRequest
0 голосов
/ 13 марта 2020

У меня есть два фрейма данных, скажем, df_1 с формой (2000 * 4) и df_2 с формой (69 * 4). Данные для df_1 доступны в минуту в течение 2000 минут, однако данные для df_2 доступны только в определенные минуты (69 точек данных распределены за 2000 минут). Я хочу объединить их на основе индекса DateTime, чтобы получить окончательный фрейм данных формы (2000 * 8).

df_1

Datetime                      X1  X2  X3  X4

15/1/2020 08:01:00            1   2   3  4
15/1/2020 08:02:00            5   6   7  8 
15/1/2020 08:03:00            9   10  11 12
15/1/2020 08:04:00            13  14  15 16
.
.
15/1/2020 23:59:00            17  18  19 20

df_2

Datetime                        Y1  Y2  Y3  Y4

15/1/2020 08:01:00               A  B   C   D
15/1/2020 09:30:00               E  F   G   H
15/1/2020 15:03:00               I  J   K   L
15/1/2020 18:04:00
.
.
15/1/2020 23:59:00               M  N   O   p

вывод

Datetime                        X1  X2  X3  X4 Y1  Y2  Y3  Y4

15/1/2020 08:01:00              1   2   3  4  A  B   C   D
15/1/2020 08:02:00              5   6   7  8  Nan Nan Nan NAn
15/1/2020 08:03:00              9  10   11 12 Nan Nan Nan nan
15/1/2020 08:04:00
15/1/2020 09:30:00
15/1/2020 15:03:00
15/1/2020 18:04:00              
.
.
15/1/2020 23:59:00              17  18  19 20  M  N   O   p

1 Ответ

2 голосов
/ 13 марта 2020

Вы можете выполнить объединение или concat. Поскольку в комментариях есть join, я буду использовать pd.concat():

final_df = pd.concat([df_1,df_2],axis=1,join='outer')

Вот пример:

import pandas as pd
df1 = pd.DataFrame({'index':['A','B','C','D','E','F'],"A":[1,2,3,4,5,6]}).set_index('index')
df2 = pd.DataFrame({'index':['B','D','F'],"B":[20,30,40]}).set_index('index')

df_output = pd.concat([df1,df2],axis=1,join='outer')

Вывод:

    A   B
A   1   NaN
B   2   20.0
C   3   NaN
D   4   30.0
E   5   NaN
F   6   40.0
...