4

この質問は、最近の h2o データテーブル パッケージに関するものです。パフォーマンスを向上させるために、パンダ コードをこのライブラリに置き換えたいと考えています。

質問は簡単です。フレーム全体または選択したさまざまな列を数値で除算/合計/乗算/減算する必要があります。

パンダでは、最初の列を除くすべての列を 3 で割るには、次のように記述できます。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "C0": np.random.randn(10000), 
    "C1": np.random.randn(10000)
})
df.iloc[:,1:] = df.iloc[:,1:]/3

datatable パッケージでは、選択した 1 つの列に対してのみこれを行うことができます。

import datatable as dt
from datatable import f

df = dt.Frame(np.random.randn(1000000))
df[:, "C1"] = dt.Frame(np.random.randn(1000000))
for i in range(1,df.shape[1]): df[:,i] = df[:,f[i]/3]

現在のところ、Python 3.6 (3.7 バージョンについては知りません) では、FrameProxy f はスライスを許可しません。この種の Frame 算術演算をループよりも実行するためのより良い方法があるかどうかを尋ねているだけですが、Documentationで見つけられませんでした。

編集:

最新のコミット#1962は、この質問に関連する機能を追加しました。最新のソース バージョンを実行できる場合は、その新機能を含む回答を追加します。

4

2 に答える 2