gpt4 book ai didi

python - 将 python 迭代器输出转换为 pandas 数据帧的最快方法

转载 作者:太空狗 更新时间:2023-10-30 02:08:29 25 4
gpt4 key购买 nike

我有一个生成器,它返回未知数量的数据行,我想将这些数据转换为带索引的 pandas 数据框。我知道最快的方法是将 CSV 文件写入磁盘,然后通过“read_csv”解析回来。我知道创建一个空数据框然后不断附加新行的效率不高。我无法创建预先确定大小的数据框,因为我不知道将返回多少行。有没有一种方法可以在不写入磁盘的情况下将迭代器输出转换为 pandas 数据帧?

最佳答案

迭代附加到 pandas 数据框并不是最好的解决方案。最好将数据构建为列表,然后将其传递给 pd.DataFrame

import random
import pandas as pd

alpha = list('abcdefghijklmnopqrstuvwxyz')

这里我们创建一个生成器,用它来构造一个列表,然后将它传递给数据框构造器:

%%timeit
gen = ((random.choice(alpha), random.randint(0,100)) for x in range(10000))
my_data = [x for x in gen]
df = pd.DataFrame(my_data, columns=['letter','value'])

# result: 1 loop, best of 3: 373 ms per loop

这比创建生成器、构建空数据框和附加行要快得多,如下所示:

%%timeit
gen = ((random.choice(alpha), random.randint(0,100)) for x in range(10000))
df = pd.DataFrame(columns=['letter','value'])
for tup in gen:
df.loc[df.shape[0],:] = tup

# result: 1 loop, best of 3: 13.6 s per loop

构建 10000 行需要 13 秒,这非常慢。

关于python - 将 python 迭代器输出转换为 pandas 数据帧的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com