我正在进行计算,创建一个Pandas系列,并join
使用Dataframe,数千次。结果是一个巨大的Dataframe,这就是我想要的。
这种内存是否有效,而不是我不知道的其他方式?我担心的是,当使用join
时,它会在内存中创建一个新的Dataframe,旧的副本仍然存在。是这样的吗?还有其他需要注意的问题吗?
答案 0 :(得分:0)
根据我的经验,它比首先生成字典然后将其变成数据帧要慢。
%%time
all_list = {}
for i in range(1000):
all_list[i] = range(1000)
df = pd.DataFrame(all_list)
待机时间:186毫秒
import psutil
mem = psutil.virtual_memory()
mem
svmem(总计= 17056518144L,可用= 10201149440L,百分比= 40.2,使用= 6855368704L,免费= 10201149440L)
然后,如果我关闭并关闭上一个python笔记本,并开始一个新的。
%%time
df = pd.DataFrame({1:range(1000)})
for i in range(2,1000):
df = df.join(pd.DataFrame({i:range(1000)}))
壁垒时间:19.5秒
import psutil
mem = psutil.virtual_memory()
mem
svmem(总计= 17056518144L,可用= 10402709504L,百分比= 39.0,使用= 6653808640L,免费= 10402709504L)
对于记忆,它更小。
所以我可以得出结论