У меня есть два нерегулярных временных ряда в виде фреймов данных (DataA и DataB), строки которых представляют значение свойства (A или B) элементов в разное время:
DataA DataB
time item_id valueA time item_id valueB
0 x A1 3 x B1
1 y A2 4 y B2
2 z A3 5 x B3
6 y A4 6 y B4
7 z A5 7 z B5
9 x A6 8 x B6
10 y A7 10 y B7
11 z A8 11 z B8
12 z A9
Определение DF в python:
dataA = [
[0 , 'x', 'A1'], [1 , 'y', 'A2'], [2 , 'z', 'A3'],
[6 , 'y', 'A4'], [7 , 'z', 'A5'], [9 , 'x', 'A6'],
[10, 'y', 'A7'], [11, 'z', 'A8'], [12, 'z', 'A9']]
dataB = [
[3 , 'x', 'B1'], [4 , 'y', 'B2'], [5 , 'x', 'B3'],
[6 , 'y', 'B4'], [7 , 'z', 'B5'], [8 , 'x', 'B6'],
[10, 'y', 'B7'], [11, 'z', 'B8']]
dataA_df = pd.DataFrame(dataA, columns = ['time', 'item_id', 'valueA'])
dataB_df = pd.DataFrame(dataB, columns = ['time', 'item_id', 'valueB'])
Я хотел бы создать один объединенный фрейм данных, который привел бы к следующему:
time item_id valueA valueB
0 x A1 NaN
1 y A2 NaN
2 z A3 NaN
3 x A1 B1
4 y A2 B2
5 x A1 B3
6 y A4 B4
7 z A5 B5
8 x A1 B6
9 x A6 B6
10 y A7 B7
11 z A8 B8
12 z A9 B8
Где:
-
Если существует элемент X, который имеет обновление в момент времени T для значения A и значения B, то есть строка с обоими этими значениями.
В противном случае, если существует элемент X, который обновляет только одно значение (либо значение A, либо значение B), существует строка, содержащая это значение, а другое пропущенное значение должно быть предыдущее значение
Если для отсутствующего значения из [2] нет предыдущего значения, то вместо него следует использовать NaN