2017-03-14 59 views
-2

我有2 for循環運行一些數據,並最終,計數行號和積累df某些操作。該代碼是在這裏,如何使用lambda函數而不是for循環

def preprocess(dfs, functions): 
    storage = [] 
    row = 0 

    for df in dfs: 
     for func in functions: 
      df = func(df) 
     row += row + df.shape[0] 
     storage.append(df) 

    df = pd.concat(storage, ignore_index=True) 
    return row, df 

我可以使用lambda功能,減少了代碼,使更優雅,性能更好?

+2

'lambda'不是性能特徵。在你的代碼中使用更多的lambda表達式不會讓它更快。 – user2357112

+1

lambda只是一種在表達式中創建函數的方法,其中函數體只包含一個'return '語句。調用一個函數會有開銷,所以如果你之前沒有函數,那麼使用lambda不會使事情變得更快。 –

+0

好的,我明白了。 -4的意義是什麼?這個問題並不是那麼糟糕,我想。你剛毀了這個賬戶。 – Arefe

回答

0

這是我的答案,因爲我得到了幾個票,他們都沒有回答這個問題。這對lambda來說當然是可能的,但是它可能不會提高性能。

def preprocess(dfs, functions): 
    d = [map(lambda func: func(df), functions) for df in dfs] 
    df = pd.concat(d[-1], ignore_index=True) 
    return df.shape[0], df 
相關問題