【发布时间】:2017-06-06 01:27:40
【问题描述】:
我有一个大型数据集,其中包含在网络中传播的对象的记录。数据集存储在 pandas 数据集中,大致如下所示:
Obj ID | Timestamp | x | y | link ID
-------|-----------|---|---|---------
123 | 506 |123|456| ab12
123 | 517 |129|436| ab12
123 | 519 |125|454| cd34
126 | 501 |123|426| gk77
126 | 505 |153|453| gk77
126 | 507 |129|856| bj88
126 | 508 |143|496| bj88
126 | 512 |125|427| gk77
126 | 515 |153|453| gk77
126 | 518 |127|256| ab12
数据帧已按Obj ID 排序,属于对象的每个记录块已按时间排序(Timestamp 字段以秒为单位)。具有相同Obj ID 和link ID 的两个连续行表示该链接对象的开始和结束。对象最终在一个链接处结束,由出现在对象记录末尾的单个链接 ID 表示。
这是所需的输出。将一个对象访问一个链接的开始记录和结束记录压缩为一条记录。对于每个对象的结束链接,只需为EndTime填写StartTime即可。
Obj ID | StartTime | EndTime | link ID
-------|-----------|---------|---------
123 | 506 | 517 | ab12
123 | 519 | 519 | cd34
126 | 501 | 505 | gk77
126 | 507 | 508 | bj88
126 | 512 | 515 | gk77
126 | 518 | 518 | ab12
注意:
不能保证一个对象不会两次进入同一链接。但是每次访问链接都需要单独记录。
由于数据集非常大,我实现的一个简单循环解决方案内存不足。
编辑:我编辑了数据集以包含我的“笔记”第一点中提到的情况。
【问题讨论】: