2016-07-12 4 views
3

私はh2o Rパッケージでかなり長い間働いていましたが、最近はpythonパッケージに移行しなければなりませんでした。H2OFrameに行をドロップする方法は?

H2OFrameは、パンダDataFrameオブジェクトのように機能するように設計されています。

df.drop([0,1,2], axis=0, inplace=True) 

しかし、私はH2OFrameと同じことを行う方法を見つけ出すことはできません。しかし、私はいくつかの行を削除する場合、乗り越えるために...パンダで管理されていないいくつかのハードルがあります。ドロップ方式は非常に明らかに明白な方法が動作していない、列だけのためのものであることを

frame.drop([0,1,2], axis=0) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-30-0eff75c48e35> in <module>() 
----> frame.drop([0,1,2], axis=0) 

TypeError: drop() got an unexpected keyword argument 'axis' 

彼らgithubソースドキュメント:

def drop(self, i): 
    """Drop a column from the current H2OFrame. 

DRに方法はありますオペラの行はH2OFrame

答えて

4

現在、H2OFrame.dropメソッドはこれをサポートしていませんが、複数の行(および複数の列)を削除するサポートを追加するためにticketを追加しました。一方

、あなたはインデックスで行をサブセットすることができます:インデックスリスト、[1,3]が、注文されていることを

import h2o 
h2o.init(nthreads = -1) 

hf = h2o.H2OFrame([[1,3],[4,5],[3,0],[5,5]]) # 4 rows x 2 columns 
hf2 = hf[[1,3],:] # Keep some of the rows by passing an index 

注意。代わりに[3,1]を渡そうとすると、エラーが発生します。 H2Oは行の順序を変更しません。これがその行方を示しています。順不同索引のリストを持っている場合は、最初にsorted関数をラップしてください。

hf2 = hf[sorted([3,3]),:] 

最後に、あなたが好む場合は、次のように、それは、オリジナルのフレーム名に新しいサブセット化フレームを再割り当てすることも大丈夫です:

hf = hf[[1,3],:] 
+0

私の心を横切っても、それは細かい配列のようにスライスしていませんでした。ありがとう! – Tgsmith61591

+0

'axis'引数を使うこともできます:' df = df.drop([0,1,2]、axis = 0) '。しかし、「インサイド」では –

0

これは、今、私はそのコメントを強調したかったサポートされていますので、インデックスで削除する方法を述べている:

軸= 1(デフォルト)場合、それは列を削除

df = df.drop([0,1,2], axis=0)

。 axis = 0の場合、行を削除します。指数が低下する列インデックス、列名、または行インデックスのリストである

drop(index, axis=1)

。単一の列を名前でドロップする文字列。インデックスで単一の列を削除するint

関連する問題