程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

数据框 - 选择最小行集来覆盖每列的所有可能值

发布于2024-11-26 22:27     阅读(579)     评论(0)     点赞(20)     收藏(4)


我正在研究一个用例,我需要从数据框中检索最少的行样本,该数据框包含所有列中找到的每个唯一值至少一行。

一个简化的例子可能是:

ID 一个
1
2
3
4
5 F

在这里,我想保留 ID 为 1、4 和 5 的行,以便至少有一行包含来自 A 的值 D、E 和 F;来自 B 的值 G、H 和 I 以及来自 C 的值 X、Y 和 Z。我不需要有所有组合,只需要有每一列的所有唯一值:

ID 一个
1
4
5 F

有什么有效的方法可以做到这一点?

谢谢


解决方案


以下是我最终的选择:

  • 计算每列中每个值的出现次数,并按计数升序排序
  • 选择包含所有出现次数最少的值的随机行,并将该值和选定行中的所有其他值添加到字典中。
  • 循环遍历我已排序的值列表,计算包含循环所在列表的当前值的每一行的“新值”数量。选择“新值”数量最多的行。
  • 重复此操作,直到所有值都被选取

由于我只是在每一步中最小化行数,因此远非最佳解决方案,但它非常高效,可以完成工作。可能可以使用递归算法来测试所有解决方案,但我对最终的行集没有太大要求,除非它需要所有可能的值。

感谢大家的意见,他们帮助我找到了这个解决方案。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/2046122/406783d6ac707101a387/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

20 0
收藏该文
已收藏

评论内容:(最多支持255个字符)