【发布时间】:2021-03-10 17:12:05
【问题描述】:
这是我第一次在这里提问,如果我做错了什么,请道歉。
我希望创建某种数据框/字典/列表,我可以在其中检查一列中的 ID 之前是否在另一列中看到过特定值。
例如对于这样的一个 pandas 数据框(9000 万行):
ID Another_ID
1 10
1 20
2 50
3 10
3 20
4 30
还有一个这样的(1000 万行):
ID Another_ID
1 30
2 30
2 50
2 20
4 30
5 70
我想以这样的第三列结束:
ID Another_ID seen_before
1 30 0
2 30 0
2 50 1
2 20 0
4 30 1
5 20 0
我正在寻找一种内存高效但快速的方法来做到这一点,有什么想法吗?谢谢!
【问题讨论】:
-
创建第一个数据帧的一组元组
(ID, Another_ID),在更新第二个帧的同时使用它来测试,别无他法,只能遍历它们一次 -
@rioV8 感谢您的回复!如果有 9000 万个元组,并且必须检查 1000 万个新行,您认为这是否足够快的查找?
-
线性搜索 90M 元素并执行 10M 次将需要很长时间,也许 Quang Hoang 的
merge将在 C 中完成,因为 pandas 使用 numpy -
“内存高效但快速的方法”这些几乎总是权衡取舍。
标签: python pandas numpy dataframe dictionary