好的,所以我需要帮助和/或建议如何解决材料树的准时/延迟问题。
我有一个熊猫数据框,其中包含材料树(['Tree'])、该树内的不同级别(['Level'])、零件编号(['Part #'])、预定的开始日期(['Sched Start' ])和预定的完成日期(['Sched Fin'])。
import pandas as pd
data = {'Tree': [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3],
'Level': [1, 2, 2, 3, 1, 2, 3, 4, 1, 2, 3, 2, 3, 2],
'Part #': ['11', '12A', '12B', '12B3',
'21', '22A', '22A3', '22A4',
'31', '32A', '32A3', '32B', '32B3', '32C'],
'Sched Start': pd.to_datetime(['12/01/2020', '11/01/2020', '11/01/2020', '10/01/2020',
'12/01/2020', '11/01/2020', '10/01/2020', '09/01/2020',
'12/01/2020', '11/01/2020', '10/01/2020', '11/01/2020', '10/01/2020', '11/01/2020']),
'Sched Fin': pd.to_datetime(['12/15/2020', '11/15/2020', '12/02/2020', '11/02/2020',
'12/15/2020', '11/15/2020', '11/02/2020', '09/15/2020',
'12/15/2020', '11/15/2020', '10/15/2020', '11/15/2020', '10/15/2020', '11/15/2020'])
}
df = pd. DataFrame(data)
正常的物料流是物料供给下一个更高的组件。例如,第 3 级项目馈入第 2 级项目。2 级项目为 1 级项目提供食物(1 级是不提供任何东西的顶部/最终组件)。可能有多个级别 2 馈送单个级别 1。多个级别 3 馈送单个级别 2 等等。所以在上面的示例代码中(对于树 1):12B3 馈送到 12B,12A 和 12B 馈送到 11。
无论如何,我需要添加另一列,其中包含一个项目的完成日期与其下一个更高装配的开始日期的比较数据。回到我们上面的例子。第 3 级部分 12B3 的完成日期为 2020 年 2 月 11 日 - 它提供了开始日期为 2020 年 11 月 1 日的 12B:12B3 是迟到的。查看日期,12B 会迟到,12A 会准时。
较低的组件将始终位于较高的组件之下。
像泥一样清澈,对吧?
我试过的:
好吧,我对遍历每一行的循环进行了一次可怕的尝试。如果前一行级别>当前行级别,它会获取级别值,然后转到下一行,它将当前行“Sched Fin”与前一行“Sched Start”进行比较,并取得了一点成功。当然,当序列中有相同级别的项目(例如两个级别 2)时,这一切都会爆炸。
任何帮助将不胜感激。
** 编辑 ** 树是相互独立的。不像关卡那样捆绑在一起。