2017-03-14 9 views
-2

いくつかのデータで実行される2つのforループがあり、結局は行番号をカウントし、何らかの操作のためにdfを蓄積しました。コードはforループの代わりにlambda関数を使用する方法

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'はパフォーマンス機能ではありません。あなたのコードでより多くのラムダを使用しても、それはより速くなりません。 – user2357112

+1

ラムダは、式に関数を作成する単なる方法です。関数本体には、単一の 'return 'ステートメントが含まれています。関数を呼び出すにはオーバーヘッドがあるので、ラムダを使うことは以前には関数を持たなかった方が速くなるわけではありません。 –

+0

さて、私はそれを得る。 -4のポイントは何ですか?この質問はそれほど悪くないと思います。あなたはこのアカウントを破棄しました。 – Arefe

答えて

0

ここで私はいくつかの投票を得て、彼らのどれも質問に答えないので、私の答えです。これは確かにラムダで可能ですが、パフォーマンスを向上させることはできません。

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 
関連する問題