1

我有以下代码

facts = []
with tqdm(total=6022484) as pbar:
for lat in dp.lat:
    for lon in dp.lon:
        for time in dp.time:
            fact = {\
                    'datetime':datetime.datetime.fromtimestamp(float(time.values)/1000000000.),\
                    'loc':[float(lon.values),float(lat.values)],\
                    'temp':celsius(dp.sel(lat=lat.values,lon=lon.values,time=time.values).t2m.values),\
                    'rh':round(dp.sel(lat=lat.values,lon=lon.values,time=time.values).rh.values,1),\
                    'rain':round(dp.sel(lat=lat.values,lon=lon.values,time=time.values).rain.values,1)
                   }
            facts.append(fact)
            pbar.update()

制作大约。每秒 100 次迭代。能不能做到最好?

4

1 回答 1

1

通常,这种方法会非常缓慢。而不是在 python 中遍历这些,您应该使用标准函数,这些函数以向量化的方式对值进行操作。

例如dp.lat = dp.lat.astype('float'), 或dp.rain = np.round(dp.rain, 0)

这是一个类似的讨论:使用 pandas 循环遍历数据帧的最有效方法是什么?

于 2015-12-30T16:41:49.047 回答