我有一个很大的数据框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可以让我知道如何改善我的问题。谢谢! –