簡體   English   中英

如何優化此代碼的性能?

[英]How to optimise the performance of this code?

我正在嘗試運行下面的代碼。 它適用於較小的數據量,但對於較大的數據量,幾乎要花一天的時間。

任何可以幫助優化代碼或可以告訴我該方法的人。 我們可以使用apply lambda解決問題嗎?

for index in df.index:

        for i in df.index:

            if ((df.loc[index,"cityId"]==df.loc[i,"cityId"]) & (df.loc[index,"landingPagePath"]==df.loc[i,"landingPagePath"]) & 
                (df.loc[index,"exitPagePath"]==df.loc[i,"exitPagePath"]) &
                (df.loc[index,"campaign"]==df.loc[i,"campaign"]) &
                (df.loc[index,"pagePath"]==df.loc[i,"previousPagePath"]) &
                ((df.loc[index,"dateHourMinute"]+timedelta(minutes=math.floor(df.loc[index,"timeOnPage"]/60))==df.loc[i,"dateHourMinute"]) |
                        (df.loc[index,"dateHourMinute"]==df.loc[i,"dateHourMinute"]) |
                        ((df.loc[index,"dateHourMinute"]+timedelta(minutes=math.floor(df.loc[index,"timeOnPage"]/60))+timedelta(minutes=1))==df.loc[i,"dateHourMinute"]))
                ):
                    if(df.loc[i,"sess"]==0):


                        df.loc[i,'sess']=df.loc[index,'sess']

                    elif(df.loc[index,"sess"]>df.loc[i,"sess"] ):

                        df.loc[index,'sess']=df.loc[i,'sess']

                    elif(df.loc[index,"sess"]==0):
                        df.loc[index,'sess']=df.loc[i,'sess'] 

                    elif(df.loc[index,"sess"]<df.loc[i,"sess"] ):
                        x=df.loc[i,"sess"]
                        for q in df.index:
                            if(df.loc[q,"sess"]==x):
                                df.loc[q,"sess"]=df.loc[index,'sess']






            else:
                if (df.loc[index,"sess"]==0):

                    df.loc[index,'sess'] = max(df["sess"])+1

看起來您正在嘗試手動進行數據庫“連接”,Pandas將此功能作為merge公開,使用它可以大大解決您的問題

我在遍及所有分支機構時遇到了麻煩,但是如果您使用merge ,然后應該進行一些后處理/過濾以獲得最終答案,那么您應該能夠獲得大部分使用的方式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM