我正在研究Databricks,我有一个包含BOM(物料清单)列表的dataframe:下面的示例报告了dataframe的结构,其中identifier是“父”产品(成品)的代码,component是“子”产品(可以是半成品或原材料)的代码。如果组件是半成品,您也可以在标识符列表中找到它,以及它的组件(但我在数据框中没有指示产品的类型,如果是成品、半成品或原材料)。你知道吗
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和JJJ(原材料)组成)。 我必须按照业务部门提供的产品列表过滤此数据帧,该列表仅包含最终产品:假设我只能选择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专家)。有没有人把一些好的建议、文档或片段作为出发点?你知道吗
你的意思是,你必须找到一种保持
yyyy
、zzzz
和aaaa
的方法,因为这些都是xxxx
依赖的产品?请澄清这一点,并进一步解释如何获得最终过滤的数据帧(我得到的结果不同),我很乐意提供帮助。我仍然很乐意提供帮助,但我仍然不明白您是如何得到最终过滤的数据帧的。你知道吗
因此您选择
xxxx
并接收三个相关组件yyyy
、zzzz
和aaaa
。然后呢?得到这三个组件的相关组件,然后递归地执行此操作,直到得到基本材质?不过,这并不能反映最终过滤的数据帧中的内容。你知道吗编辑如果我正确理解了这个问题,下面是我的想法(我不经常使用熊猫,所以如果有熊猫的特性可以让这个可爱点,我也不会感到惊讶):
其工作原理如下:
xxxx
在本例中)。你知道吗result_df
数据帧。在我们开始下一个迭代之前,我们将 当前标识符所依赖的组件,并将其添加到 我们的未处理标识符队列。你知道吗set()
来跟踪所有 到目前为止我们看到的标识符。在循环中,如果当前标识符 已经看到了,我们忽略它,继续下一个 标识符。这是因为有些产品看起来 具有循环依赖关系。你知道吗如果这是你想的,请告诉我。你知道吗
相关问题 更多 >
编程相关推荐