简介:最近,我在实际工作中遇到了这样一个实用的问题。凭借自己的LeetCode200+算法问题和Pandas熟练使用一年,它很快就完成了。
主题的描述:给定一组用户的一组多种行为,因为相邻行为之间可能存在交叉(也就是说,后者行为的开始时间可能比上一个行为的结束更早)并结合了最终信息信息。没有一般性的丧失,模拟示例数据如下:
在上面的示例数据中,在多个用户A和用户B组之间,有一定的启动时间交叉。例如,用户A的两种行为启动和结束是[3,6]和[4,7](同时,同时,同时,同时,同时,同时,,同时,同时,同时,同时,同时,同时,这两个小组的开始时间仍然是错误的),还有一个十字架,因此可以合并到[3,7]中;类似]也可以合并到[4,8]中。
为了满足上述小需求,实际上可以将其分解为两个小问题:
图片源自LeetCode56的屏幕截图
首先,第一个小问题并不困难。它可以直接实现自定义功能。示例代码如下。函数函数正常执行的前提是,启动已从小到大的顺序排序。当然,这个细节很容易实现。
为了实现第二个小功能,需要一定的技能。要确保为了根据用户组实现间隔合并,然后您必须是groupby('uid'),然后对每个组执行range_combine在每个用户及其合并之后,获取所有间隔嵌套列表,然后将问题转换为转换为问题,以将转换转换为转换,以转换为转换,以转换为转换为转换为转换到转换问题的转换将此嵌套列表分为多行,这涉及熊猫 - 探索中的有用API,该API即将将序列分为多行。从以下爆炸函数描述documentColumn)中,当列的值为元素列表时,可以将其拆分并复制银行中的剩余元素多个部分以实现分裂过程。
然后,可以完成每个用户的多个行为之间分为多行的过程。具体实现如下:
在这一点上,大多数函数已经完成,仅是最后一步,每个用户上一份合并合并后的开始时间分别分别指示开始和结束时间,仅表示它。需要的熊猫完成了代码的完整实施过程:
与多个数据处理提示相对应的现实要求,这确实是现实的!
原始:https://juejin.cn/post/7100944968101363726