簡體   English   中英

將 Pandas 數據幀拆分為子數據幀列表的最快方法

[英]Fastest way to split a pandas dataframe into a list of subdataframes

我有一個大型數據框df ,我在df.index有一個完整的唯一元素列表indices 我現在想創建所有的元素索引的subdataframes列表indices ; 具體來說

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

運行此命令需要很3e6df大約有3e6行和3e3唯一索引)。 這是執行此操作的合理方法嗎? 我很樂意收到任何可以改善此問題和相關問題的性能的意見或建議。

提前致謝!

您可以通過索引在groupby對象中使用列表理解 - 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM