私は3つの列を持つ非常に大きなファイルを持っています。最初の2つは整数で、3つ目は文字列です。私は私が立ち往生しています以下のランダムサンプリングを実行したいと思いますパンダのランダムなデータペアを使用して選択する
2 0 Somestuff9
2 0 Somestuff0
1 1 Somestuff5
0 0 Somestuff7
2 0 Somestuff9
2 0 Somestuff5
2 1 Somestuff2
1 1 Somestuff8
1 1 Somestuff2
1 0 Somestuff4
2 1 Somestuff3
0 2 Somestuff9
1 1 Somestuff10
1 0 Somestuff9
:私はここにいくつかの例の偽のデータである
data = pd.read_csv("edges+stuff.txt", sep=' ', header=None, dtype={0:np.uint32, 1:np.uint32, 2:np.str})
を使用して使用してパンダにそれを読みます。私は、データフレームから存在するいくつかのランダムペアを選びたいと思う。私はランダムな行を選びたくはありません。例えば、 "1 1"は4回起こりますが、データフレームに存在する任意のペアを選ぶ確率は同じです。私が "1 1"を選択した場合、 "1 1"を開始するすべての行を出力したいと思います。
私の例の偽データを使用して、[(0,0)、(1,0)、(1,1)、(0,2)、(2,0)、 (2,1)](これらはすべてデータに存在するすべてのペアです)を使用して、これらのペアを使用してデータフレームから行を選択します。
これを行う1つの方法は、最初の2つの列を並べ替え、並べ替えて、np.unique
と同等の処理を実行することです。次に、この一意のリストからランダムなペアを選択し、それらを使用して元のデータフレームから選択します。
パンダでこれを効率的に行う方法はありますか?
試しましたか?それはあなたのためにあまりにもゆっくりと演じますか –
@WayneWerner説明した手順を実行する方法がわかりません。どのようにして最初の2つの列のユニークなペアのリストを作成しますか? – eleanora