使用 Pandas 对存在重叠的时间范围进行排序

问题描述 投票:0回答:1

我有以下数据框,其中显示收到的执行操作的指令 - 作为列的概述,指令作为一组由数字列突出显示,每个指令告诉您在时间“timeFrom”从级别“levelFrom”开始在时间“timeTo”调整“levelTo”级别。例如。指令 9166 表示从 11:55 的 0 级到 11:59 的 18 级,从 11:59 到 12:24 停留在 18 级,然后从 12:24 的 18 级回到 12 点的 0 级: 27.

时间从 时间 数量 等级来自 等级
2024-01-06 11:55:00 2024-01-06 11:59:00 9166.0 0.0 18.0
2024-01-06 11:59:00 2024-01-06 12:24:00 9166.0 18.0 18.0
2024-01-06 12:24:00 2024-01-06 12:27:00 9166.0 18.0 0.0
2024-01-06 12:24:00 2024-01-06 12:52:00 9167.0 18.0 18.0
2024-01-06 12:52:00 2024-01-06 12:55:00 9167.0 18.0 0.0
2024-01-06 14:10:00 2024-01-06 14:14:00 9168.0 0.0 18.0
2024-01-06 14:14:00 2024-01-06 14:39:00 9168.0 18.0 18.0
2024-01-06 14:39:00 2024-01-06 14:42:00 9168.0 18.0 0.0
2024-01-06 14:21:00 2024-01-06 14:22:00 9169.0 18.0 19.0
2024-01-06 14:22:00 2024-01-06 14:47:00 9169.0 19.0 19.0
2024-01-06 14:47:00 2024-01-06 14:50:00 9169.0 19.0 0.0
2024-01-06 15:01:00 2024-01-06 15:05:00 9170.0 20.0 0.0
2024-01-06 14:35:00 2024-01-06 14:36:00 9170.0 19.0 20.0
2024-01-06 14:36:00 2024-01-06 15:01:00 9170.0 20.0 20.0
2024-01-06 15:01:00 2024-01-06 15:15:00 9171.0 20.0 20.0
2024-01-06 15:15:00 2024-01-06 15:19:00 9171.0 20.0 0.0
2024-01-06 15:15:00 2024-01-06 15:35:00 9172.0 20.0 20.0
2024-01-06 15:35:00 2024-01-06 15:39:00 9172.0 20.0 0.0
2024-01-06 15:35:00 2024-01-06 15:36:00 9173.0 20.0 19.0
2024-01-06 15:36:00 2024-01-06 15:37:00 9173.0 19.0 19.0
2024-01-06 15:37:00 2024-01-06 15:40:00 9173.0 19.0 0.0
2024-01-06 15:32:00 2024-01-06 16:02:00 9174.0 20.0 20.0
2024-01-06 16:02:00 2024-01-06 16:06:00 9174.0 20.0 0.0

从表中可以看出,后面的指令可以取代前面指令的部分内容。例如。指令 9167 表示要保持在 18 级直到 12:52,而不是按照指令 9166 在 1224 降级。

我需要的是在收到所有指令后获得最终位置的快照。 IE。对表格进行排序,以便指令提供从开始时间到结束时间的连续“故事”。注意:如果指令不相交,它们应该保持不相交。

我认为我应该做的是成对地查看指令编号并将它们串在一起以获得连续的时间线,然后继续成对直到下一条指令不相交,但我不太确定该怎么做。我不太关心保留指令编号。任何帮助将不胜感激!

为了完整起见,本示例中的最终表格应如下所示:

时间从 时间 数量 等级来自 等级
2024-01-06 11:55:00 2024-01-06 11:59:00 9166.0 0.0 18.0
2024-01-06 11:59:00 2024-01-06 12:52:00 9166.0 18.0 18.0
2024-01-06 12:52:00 2024-01-06 12:55:00 9166.0 18.0 0.0
2024-01-06 14:10:00 2024-01-06 14:14:00 9168.0 0.0 18.0
2024-01-06 14:14:00 2024-01-06 14:21:00 9168.0 18.0 18.0
2024-01-06 14:21:00 2024-01-06 14:22:00 9168.0 18.0 19.0
2024-01-06 14:22:00 2024-01-06 14:35:00 9169.0 19.0 19.0
2024-01-06 14:35:00 2024-01-06 14:36:00 9169.0 19.0 20.0
2024-01-06 14:36:00 2024-01-06 16:02:00 9169.0 20.0 20.0
2024-01-06 16:02:00 2024-01-06 16:06:00 9170.0 20.0 0.0
python pandas dataframe sorting datetime
1个回答
0
投票

如果您重新调整数据的形状,使其成为单个时间线,可能会更容易。

© www.soinside.com 2019 - 2024. All rights reserved.