【发布时间】:2021-12-16 19:04:40
【问题描述】:
我发现dataframe的检索速度非常快。我创建了 100 万行数据框,过滤所需数据只用了不到 1 秒。但是为什么我使用append方法向一个空的dataframe添加数据的时候会这么慢呢?
这是我的代码,执行时间超过 2 小时。我错过了什么?或者有没有比 df.append 方法更好的添加数据的方法?
import pandas as pd
import datetime
import random
data = pd.DataFrame(columns=('Open','High','Low','Close','Avg20'))
start = datetime.datetime.now()
for i in range(1000000):
if i % 10000 == 0:
print(i/1000000*100 , '%completed.')
data = data.append({'Open':random.random(), 'High':random.random(), 'Low':random.random(), 'Close':random.random(),'Avg9':random.random()},ignore_index=True)
end = datetime.datetime.now()
print(start, end)
提前致谢。
【问题讨论】:
-
append的缓慢是您在使用DataFrames时通常会偶然发现的。您能否澄清一下您是否真的需要逐行追加,或者您是否真的有完整的数据集可用,因此可以一次性创建整个 df? -
嗨,Kosmos,感谢回复,是的,我需要逐行添加数据,因为我一开始没有完整的数据集,所有数据都来自其他数据源,所以我不能一次创建一个完整的数据框。
-
HI,Mahrkeenerh,答案很有帮助,我试过df.loc方法,比df好。 append 但仍然感觉很慢,比我使用 df.iloc 搜索数据还要糟糕。也许这个问题没有更好的解决方案。谢谢。