Я работаю над Databricks, и у меня есть фрейм данных, который содержит список спецификации (спецификация): структура фрейма данных представлена в следующем примере, где идентификатором является код продукта «папа» (готовый продукт), а компонент - это код «сына» продукта (который может быть полуфабрикатом или сырьем). Если компонент является полуфабрикатом, его также можно найти в списке идентификаторов с его компонентами (но в кадре данных нет указания, указывающего тип продукта: готовый, полуфабрикатный или сырой).
identifier component
xxxx yyyy
xxxx zzzz
xxxx aaaa
aaaa bbbb
aaaa cccc
bbbb dddd
bbbb eeee
cccc ffff
cccc mmmm
ffff aaaa
ffff gggg
ffff hhhh
hhhh iiii
hhhh jjjj
В приведенном выше примере есть два конечных продукта (xxxx и ffff). XXXX имеет в качестве компонентов yyyy, zzzz и aaaa. aaaa должен быть полуфабрикатом, поскольку он также указан в столбце идентификатора и состоит из cccc и dddd. cccc и dddd также являются полуфабрикатами, поскольку они перечислены в столбце идентификатора и состоят из dddd, eeee, ffff и mmmm (которые должны быть исходными материалами, поскольку их нет в столбце идентификатора). Второй конечный продукт ffff состоит из aaaa (полуфабрикат, также используемый для xxxx), gggg (сырье) и hhhh (полуфабрикат, состоящий из iiii и jjjj, сырья). Я должен отфильтровать этот фрейм данных по списку продуктов, предоставленных мной по бизнесу, который содержит только конечные продукты: предположим, что мне нужно выбрать только xxxx (ffff отсутствует в списке). Проблема в том, что если я отфильтрую xxxx, я потеряю информацию, связанную с полуфабрикатами (если я отфильтрую кадр данных, выбрав только идентификатор xxxx, я получу 3 строки, но мне нужно найти способ сохранить также aaaa,bbbb и cccc, и для каждого из них также детали их компонентов). Таким образом, окончательный отфильтрованный кадр данных должен быть
identifier component
xxxx yyyy
xxxx zzzz
xxxx aaaa
aaaa bbbb
aaaa cccc
bbbb dddd
bbbb eeee
cccc ffff
cccc mmmm
Я пытаюсь выяснить, как решить эту проблему с помощью цикла (реальный кадр данных явно больше, примерно 13000 строк), но я не могу найтихорошая отправная точка (я не эксперт по питону). Кто-нибудь в качестве хорошего предложения, документации или фрагмента для использования в качестве отправной точки?