我在csv文件中有一个大表,它有500万行和4列。 我的目标是从前500k中取出每一行,并根据特定条件将其与所有后续行(即5kk-n)进行比较。条件类似于
row(n).column1 == row(n + 1).column1 AND row(n).column2 == row(n + 1).column2 AND row(n).column3 == row(n + 1 ).column3
OR
row(n).column1 == row(n + 1).column1 AND row(n).column2 == row(n + 1).column2 AND 行(n).column4中的row(n + 1).column4.split()[0]
现在我正在使用简单的循环列表:
for idx,i in enumerate(big[:500000]):
for jdx,j in enumerate(big):
if (jdx>idx and i[0]==j[0] and i[1]==j[1] and i[2]==j[2]) or (i[0]==j[0] and i[1]==j[1] and j[3].split()[0] if j[3].split() else '' in i[3]):
matches.append([idx,jdx])
这显然需要很长时间才能完成(使用单一过程大约需要一周时间)。 Pandas和numpy一次对整个阵列的操作都有好处,但我不知道我是否可以将这个任务转换成它们。
所以问题是,我怎样才能加快进程?
答案 0 :(得分:0)
我最终使用了以下内容来提高性能。