老师看下这样的有办法优化么,谢谢了

赵先生_386841 2022-9-8 576

arrayRet= [
["a","rmb",20,3,4,5,"PENGHAI_SHA"],
["a","rmb",20,3,4,5,"PENGHAI_SHA"],
["b","rmb",20,3,4,5,"PENGHAI_SHA"],
["a","usd",20,3,4,5,"SHA_YITONG"],
["a","ouyuan",20,3,4,5,"PENGHAI_SHA"],
["a","ouyuan",20,3,4,5,"PENGHAI_SHA"],
["a","ouyuan",20,3,4,5,"EXDIFF"],
["a","ouyuan",20,3,4,5,"EXDIFF"],
["a","usd",20,3,4,5,"EXDIFF"]
]
shuzuyingfu =[]
For i=0 To UBound(arrayRet)
  Dim temp1 = 0
  Dim temp2 = 0
  Dim temp3 = 0
  Dim temp4 = 0
  //下面这个循环大数据量的话非常慢,有办法优化么
  For Each value In arrayRet 
      If arrayRet[i][1= value[1And  arrayRet[i][6= value[6And  arrayRet[i][0= value[0]
        temp1 = CNumber(temp1)  + CNumber(value[2])
        temp2 = CNumber(temp2)  + CNumber(value[3])
        temp3 = CNumber(temp3)  + CNumber(value[4])
        temp4 = CNumber(temp4)  + CNumber(value[5])
      End If
      temp = [arrayRet[i][0],arrayRet[i][1],temp1,temp2,temp3,temp4,arrayRet[i][6]]
      push(shuzuyingfu,temp)
  Next
Next
objDatatable = Datatable.BuildDataTable(shuzuyingfu,["a","b","c","d","e","f","g"])
objDatatable = Datatable.DropDuplicatesDataTable(objDatatable,["a","b","g"],"last")
objDatatable = Datatable.GetDataTableByArray(objDatatable,false)
TracePrint(objDatatable)


最新回复 (9)
  • life 2022-9-8
    2
    放数据库,用sql算法出
  • 赵先生_386841 2022-9-8
    3
    life 放数据库,用sql算法出
    这是最快的
  • 赵先生_386841 2022-9-8
    4
    但是现在是处理数组的问题0.0
  • 哈哈哈11 2022-9-9
    5


    你看这样可以不,加了判断,不用数据表去重了


  • 赵先生_386841 2022-9-13
    6
    哈哈哈11 你看这样可以不,加了判断,不用数据表去重了

    快了一点,数据量超过2000就会慢,我试着分开查数取数循环合并,又好了一点,但是效果还是不太理想

  • 何涛_736674 2022-9-13
    7
    import pandas as pd

    arrayRetzuizhongyufu1= [
    ["a","rmb",20,3,4,5,"PENGHAI_SHA"],
    ["a","rmb",20,3,4,5,"PENGHAI_SHA"],
    ["b","rmb",20,3,4,5,"PENGHAI_SHA"],
    ["a","usd",20,3,4,5,"SHA_YITONG"],
    ["a","ouyuan",20,3,4,5,"PENGHAI_SHA"],
    ["a","ouyuan",20,3,4,5,"PENGHAI_SHA"],
    ["a","ouyuan",20,3,4,5,"EXDIFF"],
    ["a","ouyuan",20,3,4,5,"EXDIFF"],
    ["a","usd",20,3,4,5,"EXDIFF"]
    ]
    def  group_by(arrayRetzuizhongyufu1):
        df = pd.DataFrame(arrayRetzuizhongyufu1)
        df.columns= ['c1','c2','c3','c4','c5','c6','c7']
        result = df.groupby(['c1','c2','c7'],as_index=False).sum()
        print(result)


        
    group_by(arrayRetzuizhongyufu1)
  • 何涛_736674 2022-9-13
    8
    写个python插件
  • 哈哈哈11 2022-9-13
    9
    这个没办法啊,如果要用这种方式,因为只要进入第二层循环就会遍历所有的数据啊,数据多肯定慢啊
  • 赵先生_386841 2022-9-15
    10
    何涛_736674 写个python插件
    嗯,这个确实快,一分钟就跑完了所有,
返回
发新帖