多くの場合、基本データを保持するための大きなデータフレームdf
があり、基本データ列によって計算された派生データを保持するためにさらに多くの列を作成する必要があります。
私はパンダでそれを行うことができます:
df['derivative_col1'] = df['basic_col1'] + df['basic_col2']
df['derivative_col2'] = df['basic_col1'] * df['basic_col2']
....
df['derivative_coln'] = func(list_of_basic_cols)
など。パンダは、すべての派生列のメモリを一度に計算して割り当てます。
私が今欲しいのは、派生列の計算とメモリ割り当てを実際に必要な瞬間まで延期するための遅延評価メカニズムを持つことです。lazy_eval_columns を次のように定義します。
df['derivative_col1'] = pandas.lazy_eval(df['basic_col1'] + df['basic_col2'])
df['derivative_col2'] = pandas.lazy_eval(df['basic_col1'] * df['basic_col2'])
これにより、Python の「利回り」ジェネレーターのように時間/メモリを節約できますdf['derivative_col2']
。コマンドを発行すると、特定の計算とメモリ割り当てのみがトリガーされるためです。
lazy_eval()
では、パンダで行う方法は? ヒント/考え/参照は大歓迎です。