У меня есть два excel-файла. Оба содержат информацию об одних и тех же объектах данных. Объекты данных идентифицируются по номеру объекта (столбец ON
), который имеет тип str
.
пример:
Table 1 Table 2
ON colA colB colToUpdate ON colImportant
1.2.3 abc 123 1.2.3 inf
2.9.6 ert 987 1.2.3 mat
3.5.0 nms 021 2.9.6 mat
2.9.6 tr
2.9.6 ch
3.5.0 tr
и
myValues={inf, ch}
Задача:
Мне нужно проверить, находится ли одно из значений colImportant
в таблице 2 в моем myValues
и что объект данных (строка с тем же номером объекта) должен получить значение 'Ok' в colToUpdate
в df1
.
ожидание
new Table 1
ON colA colB colToUpdate
1.2.3 abc 123 Ok
2.9.6 ert 987 Ok
3.5.0 nms 021 NaN
Я думал о том, чтобы сохранить оба в отдельном фрейме данных (table1 ind df1
и table2 в df2
) и всегда искать один и тот же номер объекта в df2
при обновлении следующего столбца в df1
. Но это всегда будет выполнять поиск по всему df2
(существует около 30000 объектов данных, что означает 30000 строк в df1
. В df2
имеется 75000 строк, поскольку один объект данных может храниться несколько раз, а другое значение в colImportant
, как вы можете видеть выше).
Другая идея состоит в том, чтобы сделать tempCol
в df1
, где я помещаю все значения из colImportant
в df2
с разделителем, например ,
(НО КАК, мне нужно немного объединение нескольких строк в одну в df2
и затем объединение dfs на 'ON'
). Затем, когда я хочу обновить строки в df1
по некоторым критериям, я должен проверить разделенные значения.
Закончено, я могу удалить tempCol
.
Это должно выглядеть так:
Table 1
ON colA colB colToUpdate tempCol
1.2.3 abc 123 inf,mat
2.9.6 ert 987 mat,tr,ch
3.5.0 nms 021 inf