由此question https://stackoverflow.com/questions/28056171/how-to-build-and-fill-pandas-dataframe-from-for-loop和其他人似乎不建议使用concat
or append
构建 pandas 数据框,因为它每次都会重新复制整个数据框。
我的项目涉及每 30 秒检索少量数据。这可能会运行 3 天的周末,因此有人很容易预计一次会创建超过 8000 行。向此数据框添加行的最有效方法是什么?
我用了这个答案df.loc[i] = [new_data]
建议,但我有 > 500,000 行,而且速度非常慢。
虽然给出的答案对于OP的问题很有帮助,但我发现在预先处理大量行时(而不是OP描述的欺骗)使用csvwriter将数据添加到内存中的CSV对象更有效,然后最后使用pandas.read_csv(csv)
生成所需的 DataFrame 输出。
from io import BytesIO
from csv import writer
import pandas as pd
output = BytesIO()
csv_writer = writer(output)
for row in iterable_object:
csv_writer.writerow(row)
output.seek(0) # we need to get back to the start of the BytesIO
df = pd.read_csv(output)
return df
对于约 500,000 行,速度提高了 1000 倍,并且随着行数的增加,速度提升只会变得更大(the df.loc[1] = [data]
相对来说会慢很多)
希望这可以帮助那些在处理比OP更多的行时需要效率的人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)