python - 从数据数组中过滤掉重叠数据
问题描述
我有一个这样的数据数组。
---------------------------------------
| Name | Start time | End time | Count|
---------------------------------------
| A | 5:00 | 5:30 | 10 |
| B | 5:00 | 5:45 | 20 |
| C | 5:36 | 5:50 | 30 |
| D | 5:43 | 5:55 | 40 |
| E | 5:56 | 6:00 | 50 |
---------------------------------------
我想要做 :
1. Sum of Count of A and B since they are both overlapping.
2. Sum of Count of B , C and D since they are both overlapping.
3. I want to store E in separate array since it is not overlapping with anyone.
输出 2 个数组:-
Overlap Array
A, B => 30
B,C,D => 90
Non - Overlapping array
E => 50
解决方案
一个简单的方法是这样的:
for row in l:
row['overlapping_count'] = 0
for otherrow in l:
if (row['start'] <= otherrow['start'] <= row['end']) or (row['start'] <= otherrow['end'] <= row['end']):
row['overlapping_count'] += otherrow['count']
这将计算每一行的重叠计数。但是请注意,这是一个 O(n^2) 算法,并且随着数据量的增加它不会很好地扩展。
推荐阅读
- reactjs - 使用酶/玩笑关闭后,reactstrap 模态中的内容继续存在
- python - 使用按钮更改标签和图像,Tkinter - 错误
- javascript - 通过 nunjucks-webpack-loader 在 nunjucks 中翻译
- javascript - RxJS Observable.combineLatest 永远不会完成
- ios - Swift 5 Closures explained
- javascript - 如何使用 Selenium 和 Java 提取 DOM 中的文本
- java - Apache Commons Lang 类“ArrayUtils”中“添加”的时间复杂度
- php - MongoDB GridFS 按 ID 查找文件
- java - 有没有人在 Web 应用程序中使用 MSAL4J java 库为 ADFS 身份验证服务器实现身份验证?
- python - 如何在 Python 中处理多个项目的一个公共 lib 文件夹