首页 > 解决方案 > 制作子数据框列表的最快方法

问题描述

我有大量数据。

它包含 10 年的日期变量(约 3,650 天),每天有超过 10,000 次观察。

因此,总行数为 36,500,000。

我的目标是制作按日期分组的多个(大约 3,650 个)子数据框并将其放入一个列表中。

我会使用的方式是for-loop,这需要很多时间。

实际上,按照我的电脑规格,完成这项工作大约需要 1 个小时。

我想找到创建多个子数据帧并将其放入列表的最佳(最快)方法。

我的代码和简单示例如下。

谢谢阅读。


import pandas as pd


import pandas as pd
import numpy as np

df = pd.DataFrame({'date' : ['20200701','20200701','20200702','20200702','20200703'],
                   'city' : ['NewYork', 'Tokyo', 'NewYork', 'Tokyo', 'Moscow'],
                   'amt' : [1,2,10,20,100]})

dfs1 = []

array = df.values
for each in np.unique(array[:,0]):
    dfs1.append(pd.DataFrame(array[array[:,0] == each,:]).rename(columns = {0 : 'date', 1: 'city', 2 : 'amt'}))







标签: pythonpandas

解决方案


对于更快的迭代,您可以尝试并行执行,尽管更简单的方法是列表理解

[df[df.date==i] for i in df.date.unique()]

推荐阅读