我有一个169361行的大数据帧,我想比较所有行的行成对。 我的数据帧:
new_org old_org asn cc
85736 pcizzi 85736 - Pcizzi S .a 23201 PY
001 001 Host 40244 US
001 001 IT Complex 55734 IN
001 hospedagem 001 Hospedagem Ltda 36351 US
001web action.us.001web.net 36351 US
在我的代码中,我将“new\u org”列和“asn”列的内容成对进行比较,如果它们相同,我将添加一个“match”标记
my code
:。你知道吗
matching_dic = []
tuples = [tuple(x) for x in df_compare.values]
# tuples
for i in range(len(tuples)):
for j in range(i+1, len(tuples)):
if tuples[i][1]!=tuples[j][1]:
compare = str(tuples[i][0]) + '|' + str(tuples[j][0])
originals_asn = str(tuples[i][2]) + '|' + str(tuples[j][2])
originals_cc = str(tuples[i][3]) + '|' + str(tuples[j][3])
if tuples[i][0]==tuples[j][0]:
if tuples[i][2]==tuples[j][2]:
first_tag = 'match'
matching_dic.append({'originals_asn':originals_asn,'originals_cc':originals_cc, 'compare': compare, 'first_tag': first_tag})
dftest = DataFrame(matching_dic)
这里是Expected result
:
compare first_tag originals_asn originals_cc
001 hospedagem|001web match 3595|3595 US|US
作为测试,它现在可以很好地处理1000行数据,但是整个数据集需要很长时间。有人知道更有效的方法吗?你知道吗
有点像黑客,但我认为它应该比你目前正在做的要快一点(找到答案的一种方法)。我复制了一行以更好地检查它是否正常工作(因此下面您可以看到第0行和第2行与第4行和第5行匹配):
无论如何,如果这是一个有用的方法(而且足够快),它肯定可以进一步清理。你知道吗
相关问题 更多 >
编程相关推荐