如何解决识别数据帧中重复出现的值对
我已经构建了一个工具来识别 Pandas 数据框中的重复值对。
索引 | 姓名1 | name2 | name3 | name4 | name5 |
---|---|---|---|---|---|
0 | 蒂姆 | 皮特 | 史蒂夫 | 鲍勃 | 路易莎 |
1 | 皮特 | 蒂姆 | 艾丹 | 凯特 | 凯丝 |
2 | 凯文 | 克莱尔 | 伊恩 | 蒂姆 | 皮特 |
3 | 鲍勃 | 路易莎 | 蒂姆 | 皮特 | 托比 |
4 | 史蒂夫 | 克莱尔 |
该工具将从上述(非常小的)数据集中通知存在以下对:
对名称 | 频率 |
---|---|
路易莎和鲍勃 | 2 |
皮特和鲍勃 | 2 |
皮特和路易莎 | 2 |
蒂姆和鲍勃 | 2 |
蒂姆和路易莎 | 2 |
蒂姆和皮特 | 4 |
为此,我采取了以下步骤:
- 为每部电影创建一个布尔值向量,其值根据每个演员的外表设置(我实际上在这里使用 SciPy 的 csr_matrix() 类)
- 取此向量及其转置的外积。
- 将此矩阵添加到累加器矩阵(其类型为 int,同样属于 csr_matrix 类),在对角线上和上方丢弃了值。
- 在累加器中的任何值超过 1 时标识。这些值中的每一个都表示一对的重复出现。我已经在新的 DF 中记录了这些对,其中包含 Louisa & Bob、Pete & Bob 等列。
- 计算此 DF 中的非零值以获得每个转换对出现频率的计数。
- 这些计数加了 1。
我相信这是一个很好的系统,用于识别这些“强制转换对”的出现频率。但是,我想知道每个演员对都出演了哪些电影:我的数据不足,但是,每个演员对的第一次出现。
- 使用更高等级的数组:我可以堆叠在第 3 步中计算的矩阵。这将允许我返回上一次(第一次)出现的事件,因为我会保留这些信息。
- 迭代每个强制转换对,并使用逻辑和比较来确定出现的次数。
选项 1 似乎一点也不简单。我正在使用的实际 DF 包含大约 11,000 行,识别出的转换对的数量约为 3,300。并且 SciPy csr_matrix 不支持与 NumPy ndarrays 类似的“堆叠”或更高等级的原则。我可以创建 11,000 个新的 csr_matrix 对象,但这似乎不是最佳实践。
而且选项 2 很丑!
这不是一个具体的问题,所以可能不合适,但我会重视您提供的任何评论/建议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。