2017-10-10 3 views
1

大きなデータフレームdfがあります。indicesの固有リストがdf.indexにあります。 indicesに要素で索引付けされたすべてのサブデータフレームのリストを作成する必要があります。 (df3e6行、および3e3ユニークなインデックスを持っている)ものの、具体的にこのコマンドを実行するパンダのデータフレームをサブデータフレームのリストに分割する最も速い方法

list_df = [df.loc[x] for x in indices] 

は年齢を取っています。これはこの操作を実行するのに合理的な方法ですか?この問題や関連する問題のパフォーマンスを向上させることができるようなコメントや提案をいただければ幸いです。

ありがとうございます!あなたは、インデックスによってgroupbyオブジェクトにリストの内包表記を使用することができます

+0

をdownvoterは私がどのように知っていることができれば、私は喜んでいるだろう私の質問を改善する。ありがとう! –

答えて

1

- 、level=0高速化ソリューションのソートsort=False変更デフォルト:

L = [x for i, x in df.groupby(level=0, sort=False)] 

np.random.seed(123) 
N = 1000 
L = list('abcdefghijklmno') 
df = pd.DataFrame({'A': np.random.choice(L, N), 
        'B':np.random.randint(10, size=N)}, index=np.random.randint(100, size=N)) 

In [273]: %timeit [x for i, x in df.groupby(level=0, sort=False)] 
100 loops, best of 3: 9.91 ms per loop 

In [274]: %timeit [df.loc[x] for x in df.index] 
1 loop, best of 3: 417 ms per loop 
+0

非常に速い返答をありがとう!この解決法がより速ければ、私は試してみるつもりです。 –

+0

私はgoinfgテストをしていますが、私はしばらく答えます。 – jezrael

+0

ありがとう、それは非常に高速です!なぜこれが起こるのか説明できますか? –

関連する問題