#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. О, так просто, большое вам спасибо, сэр, вы спасли мне жизнь!