【发布时间】:2019-11-01 23:02:47
【问题描述】:
我正在研究 Databricks,我有一个包含 BOM(物料清单)列表的数据框:数据框的结构在下面的示例中报告,其中标识符是“父亲”产品的代码(成品)和组件是“子”产品的代码(可以是半成品或原材料)。如果组件是半成品,您也可以在标识符列表中找到它及其组件(但我在数据框中没有任何指示告诉我产品的类型,是成品、半成品还是生的)。
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 行)但我找不到一个好的起点(我不是 python 专家)。有没有人作为一些好的建议、文档或 sn-p 用作起点?
【问题讨论】: