python - 冗余稀疏 (3NF) 数据结构
问题描述
鉴于以下事件表:
+---------+-------------+----------+----------+-----------+
| Case ID | Activity ID | Resource | Firm | Timestamp |
+---------+-------------+----------+----------+-----------+
| 1 | A | Alice | BMW | 20:21 |
+---------+-------------+----------+----------+-----------+
| 1 | B | Bob | BMW | 20:24 |
+---------+-------------+----------+----------+-----------+
| 2 | A | Alice | Mercedes | 10:45 |
+---------+-------------+----------+----------+-----------+
| 2 | C | Bob | Mercedes | 11:23 |
+---------+-------------+----------+----------+-----------+
| 3 | B | Alice | Mercedes | 11:00 |
+---------+-------------+----------+----------+-----------+
| 3 | C | Bob | Mercedes | 23:45 |
+---------+-------------+----------+----------+-----------+
我们可以观察到,如果我们按 对条目进行分组Case ID
,我们最终会得到特定于每个事件的信息Case ID
(例如Firm
),以及特定于每个事件的信息(例如Activity ID
、Resource
、Timestamp
)。
将其全部存储在当前表中,重复这些值BMW
并且Mercedes
至少一次。现在对于每个有很多事件的数据集Case ID
,我们会有更多的冗余信息。
我想要的是这个表的一种稀疏表示,我不存储重复项,但可能只引用它们。我仍然希望保留过滤和排序功能,例如熊猫数据框等完整表格带来的功能。
我的问题是,如果有一个已经建立的内存数据结构和/或库已经实现了这样的东西。也许熊猫已经这样做了,但我还没有弄清楚。
感谢您的任何帮助或指点。
更新 1
正如@HighPerformanceMark 指出的那样,您可以将我的要求表述为类似于一组 3 个表的数据结构。一个用于特定于 的属性Case ID
,另一个用于特定于事件的属性,最后一个表将键从前者映射到后者。
我最初的问题仍然存在:是否已经有我可以实现的有效数据结构,或者是否有适合我的用例的库。如果我大胆猜测一下,我可以想象 3 个 pandas 数据结构的组合,如上一段所述使用,但我不确定执行前面提到的操作(过滤)的效率如何。
解决方案
推荐阅读
- sharepoint - 仅为图库中提交表单。在电源应用程序中选择的项目
- python - 循环遍历数据框列中的每个值
- node.js - 使用 Powershell 将对象导出到 JSON 时,文件 l 中包含奇怪的字符
- google-cloud-platform - 在推送时启用 Pub/Sub 授权后无法在端点上接收通知
- c# - 如何在 C# 中将新部分添加到应用程序配置文件
- javascript - 使用 setInterval 无法在异步函数中达到值 - JavaScript
- python - 为什么在 Django App 中显示“django.core.management.base.SystemCheckError”& 无法运行服务器
- node.js - 反应原生无法解析模块util
- vue.js - 如何解决“通过导航守卫从'/'到'/dashboard'时重定向”错误?
- reactjs - React useEffect:如何清除Interval?