从此question和其他人似乎不建议使用 concat
或 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 倍,并且随着行数的增加,速度提升只会越来越大(df.loc[1] = [data]
相对而言会慢很多)
希望这有助于在处理比 OP 更多的行时需要效率的人。
关于Python - 向数据框添加行的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41888080/