2024-09-27 21:26:23 发布
网友
我有一个21 GB的数据集:
domain|ns 123.com|ns1.domanihost.com hymi.net|ns2.hostinger.com
以及另一个12 GB数据集df_ip:
我想加入他们的域名和域名,为两个文件中的域名提取ip和ns。在
我想使用它的方法是将df_uip数据加载到字典中,逐行检查df_ns数据是否存在,然后提取ns。但它仍然是非常消耗资源的。在
有没有其他更有效的办法?在
sort -o df_ns.csv df_ns.csv && \ sort -o df_ip.csv df_ip.csv && \ join -t'|' df_ns.csv df_ip.csv > df_combined.csv
参考号:http://linux.die.net/man/1/join
按你的第一列数据排序。 之后,您就不需要将数据存储在内存中,只需使用如下两个迭代器:
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
参考号:http://linux.die.net/man/1/join
按你的第一列数据排序。 之后,您就不需要将数据存储在内存中,只需使用如下两个迭代器:
相关问题 更多 >
编程相关推荐