Панды объединяют две базы данных с не совпадающими временными рядами

#python #pandas #database #dataframe #csv

Вопрос:

Попытка объединить 2 БД в Python с одним временным диапазоном, но разными значениями времени. С = pd.merge_asof(A, B, on=’время’) дает ошибку типа: Не найдена соответствующая подпись

A

время счетчик 0 счетчик 1
2021-05-27 19:09:00 0.0172 0.0207
2021-05-27 19:09:15 0.0483 0.0517
2021-05-27 19:09:30 0.0621 0.0655
2021-05-27 19:09:45 0.0897 0.0931
2021-05-27 19:10:15 0.155 0.155

B

время Оценить C D
2021-05-27 19:09:13 1 1
2021-05-27 19:09:13 0 2 2
2021-05-27 19:09:14 0.42 2 3
2021-05-27 19:09:14 0 3 4
2021-05-27 19:09:15 0.4 5
2021-05-27 19:10:05 0.1 2 3

Я хочу, чтобы С выглядел как:

C

время счетчик 0 счетчик 1 Оценить C D
2021-05-27 19:09:00 0.0172 0.0207 N/A N/A N/A
2021-05-27 19:09:13 N/A N/A N/A 1 1
2021-05-27 19:09:13 N/A N/A 0 2 2
2021-05-27 19:09:14 N/A N/A 0.42 2 3
2021-05-27 19:09:14 N/A N/A 0 3 4
2021-05-27 19:09:15 0.0483 0.0517 0.4 N/A 5
2021-05-27 19:09:30 0.0621 0.0655 N/A N/A N/A
2021-05-27 19:09:45 0.0897 0.0931 N/A N/A N/A
2021-05-27 19:10:05 N/A N/A 0.1 2 3
2021-05-27 19:10:15 0.155 0.155 N/A N/A N/A

Ответ №1:

Вы ищете внешнее соединение?

 c = a.merge(b, on='time', how='outer').sort_values('time')

                 time  counter0  counter1  rate    C    D
0 2021-05-27 19:09:00    0.0172    0.0207   NaN  NaN  NaN
5 2021-05-27 19:09:13       NaN       NaN   NaN  1.0  1.0
6 2021-05-27 19:09:13       NaN       NaN  0.00  2.0  2.0
7 2021-05-27 19:09:14       NaN       NaN  0.42  2.0  3.0
8 2021-05-27 19:09:14       NaN       NaN  0.00  3.0  4.0
1 2021-05-27 19:09:15    0.0483    0.0517  0.40  NaN  5.0
2 2021-05-27 19:09:30    0.0621    0.0655   NaN  NaN  NaN
3 2021-05-27 19:09:45    0.0897    0.0931   NaN  NaN  NaN
9 2021-05-27 19:10:05       NaN       NaN  0.10  2.0  3.0
4 2021-05-27 19:10:15    0.1550    0.1550   NaN  NaN  NaN
 

Комментарии:

1. О, так просто, большое вам спасибо, сэр, вы спасли мне жизнь!