我的数据框包含1000万行!在分组后,剩下约900万个子框架需要循环。
代码如下:
data = read.csv('big.csv')
for id, new_df in data.groupby(level=0): # look at mini df and do some analysis
# some code for each of the small data frames
这是非常低效的,代码已经运行了10多个小时。
有没有办法加速?
完整代码:
d = pd.DataFrame() # new df to populate
print 'Start of the loop'
for id, new_df in data.groupby(level=0):
c = [new_df.iloc[i:] for i in range(len(new_df.index))]
x = pd.concat(c, keys=new_df.index).reset_index(level=(2,3), drop=True).reset_index()
x = x.set_index(['level_0','level_1', x.groupby(['level_0','level_1']).cumcount()])
d = pd.concat([d, x])
获取数据:
data = pd.read_csv('https://raw.githubusercontent.com/skiler07/data/master/so_data.csv', index_col=0).set_index(['id','date'])
注意:
大多数id只有一个日期,这表示仅有一次访问。对于有多次访问的id,我希望将它们结构化为三维格式,例如将所有访问存储在三个维度中的第二个维度中。输出结果为(id,visits,features)
dask
应该能够帮助解决。 - jezrael