У меня есть две панды DataFrames. Оба DataFrames являются временными рядами с одним общим столбцом (назовем его batchNumber) следующей структуры:
[time = index, batchNumber, valueColumn, other fields]
Первый DataFrame состоит из одной строки на batchNumber, второй DataFrame состоит из множества строк на batchNumber, каждая строка с отдельным шагом по времени.
Я хотел бы объединить (намеренно избегая «соединения» здесь, так как я не уверен, что это будет правильная техника) этих двух кадров в один, имеющий структуру:
[time1, batchNumber1 = batchNumber2, value1, [(time2[0], value2[0]), (time[1], value[1]), (time[2], value[2]), ..., (time[N], value[N])], other fields1]
Следовательно, это своего рода «DataFrame внутри DataFrame». Это возможно? Как этого добиться?
Данные в df1 выглядят так, столбцы [value, batchNumber, timestamp, otherID]:
[[3.06130831419325e-05 1552608005236178640 '2019-03-15T00:00:05.236178688Z' 1552608005236178640]
[3.1214206203101214e-05 1552608010657198640 '2019-03-15T00:00:10.657198592Z' 1552608010657198640]
[2.9220824990100192e-05 1552608016078218640 '2019-03-15T00:00:16.078218752Z' 1552608016078218640]
[3.1036932744355974e-05 1552608021499238640 '2019-03-15T00:00:21.499238656Z' 1552608021499238640]
[2.9085449547509336e-05 1552608026920258640 '2019-03-15T00:00:26.92025856Z' 1552608026920258640]
...
Данные в df2 выглядят следующим образом, столбцы [value, batchNumber, timestamp, otherID]:
[[512.5499877929688 1552608005236178640 '2019-03-15T00:00:05.236178688Z' 1552608005236178640]
[512.7000122070312 1552608005236178640 '2019-03-15T00:00:05.236180736Z' 1552608005236178640]
[513.0999755859375 1552608005236178640 '2019-03-15T00:00:05.236182528Z' 1552608005236178640]
[513.0 1552608005236178640 '2019-03-15T00:00:05.236184576Z' 1552608005236178640]
[513.5 1552608005236178640 '2019-03-15T00:00:05.236186624Z' 1552608005236178640]
[512.8499755859375 1552608005236178640 '2019-03-15T00:00:05.236188672Z' 1552608005236178640]
[513.3499755859375 1552608005236178640 '2019-03-15T00:00:05.23619072Z' 1552608005236178640]
[512.9500122070312 1552608005236178640 '2019-03-15T00:00:05.236192768Z' 1552608005236178640]
[513.2000122070312 1552608005236178640 '2019-03-15T00:00:05.23619456Z' 1552608005236178640]
[513.2000122070312 1552608005236178640 '2019-03-15T00:00:05.236196608Z' 1552608005236178640]
[512.8499755859375 1552608005236178640 '2019-03-15T00:00:05.23619...
Как можно видеть, в df1 имеется значение batchNumber и много раз в df2 одно и то же batchNumber, что создает отношение 1: n между строками df1 и df2.
Я хотел бы, чтобы все строки df2 соответствовали batchID df1 в виде подтаблицы / списка / DataFrame в новой ячейке, добавленной к df1, символически говоря:
df_new.row = df1.row + df2.subset(batchNumber(df2) == batchNumber(df1))