我有一個很大的數據框df
其中我有一個完整列表indices
df.index
中的獨特元素。我現在想創建一個由indices
中的元素索引的所有子數據框的列表;具體將熊貓數據幀拆分爲子數據框列表的最快方法
list_df = [df.loc[x] for x in indices]
運行此命令正在儘管年齡(df
有大約3e6
行,3e3
唯一索引)。這是一個合理的方式來執行此操作?我會很高興收到任何可以改善此類問題和相關問題的意見或建議。
在此先感謝!
我有一個很大的數據框df
其中我有一個完整列表indices
df.index
中的獨特元素。我現在想創建一個由indices
中的元素索引的所有子數據框的列表;具體將熊貓數據幀拆分爲子數據框列表的最快方法
list_df = [df.loc[x] for x in indices]
運行此命令正在儘管年齡(df
有大約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
我會很高興,如果downvoter可以讓我知道如何改善我的問題。謝謝! –