gpt4 book ai didi

python : The most efficient way to join two very big (20+ GB) datasets?

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:29 25 4
gpt4 key购买 nike

我有一个 21 GB 的数据集 df_ns:

domain|ns
123.com|ns1.domanihost.com
hymi.net|ns2.hostinger.com

和另一个 12 GB 数据集 df_ip:

ip|domain
28.76.2.2|myname.com
86.90.234.5| 123.com

我想在域名上加入他们,并为两个文件中的域提取 ip 和 ns。

我想到的使用方法是将 df_ip 数据加载到字典中,逐行遍历 df_ns 数据并检查域是否存在,然后提取 ns.但它仍然非常耗费资源。

有没有人有任何其他更有效的想法如何去做?

最佳答案

按第一列对数据进行排序,例如,使用 gnu 排序。之后,您将不需要将数据存储在内存中,只需像这样使用两个迭代器:

import csv, sys
it1 = (csv.reader(open("df_ns", "r")))
it2 = (csv.reader(open("df_ip", "r")))
# skip the headers
it1.next()
it2.next()
try:
dm1, ns = it1.next() # first row
except StopIteration:
sys.exit(0)
try:
dm2, ip = it2.next()
except StopIteration:
sys.exit(0)
while True:
if dm1 == dm2:
print dm1, ns, ip
if dm1 < dm2:
try:
dm1, ns = it1.next()
except StopIteration:
break
continue
try:
dm2, ip = it2.next()
except StopIteration:
break

关于 python : The most efficient way to join two very big (20+ GB) datasets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30714056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com