Pandas 通过循环函数执行构造数据帧的更有效方法

Pandas 通过循环函数执行构造数据帧的更有效方法,pandas,dataframe,Pandas,Dataframe,现在我已经编写了一个解析器来从原始html源代码中提取信息,它可以将它们作为元组返回,我必须循环这个函数并使用返回来构造一个数据帧(每个循环的返回作为一行)。以下是我所做的: import pandas as pd import leveldb for key, value in db.RangeIter(): html = db.Get(key) result = parser(html) df = df.append(pd.Series(result, index =

现在我已经编写了一个解析器来从原始html源代码中提取信息,它可以将它们作为元组返回,我必须循环这个函数并使用返回来构造一个数据帧(每个循环的返回作为一行)。以下是我所做的:

import pandas as pd
import leveldb
for key, value in db.RangeIter():
    html = db.Get(key)
    result = parser(html)
    df = df.append(pd.Series(result, index = index), ignore_index = True)

注意,已经定义了解析器和索引,db是一个leveldb对象,它存储所有链接和相应的html源代码。我的问题是,构建数据帧的更有效方法是什么?谢谢

我会在循环开始之前创建一个数据帧,然后将连续的数据帧附加到该数据帧。请注意,如果
result
是一个元组,则需要先将其转换为列表,然后再转换为数据帧。我假设你的索引已经是一个列表了。因此:

df = pd.DataFrame()

for key, value in db.RangeIter(): 
    html = db.Get(key) 
    result = parser(html)
    df = df.append(pd.DataFrame(list(result), index = index).transpose())

df.reset_index(inplace = True)
这并不是说您的解析器不能更有效地返回数据来创建数据帧,但我是在单个返回元组的范围内工作的


此外,根据元组中元素的数量,在循环中创建简单的python列表,然后在完成时从这些列表创建数据帧可能会更有效,但您不需要说明元组的大小

要将元组保留在一列中,还是在
len(元组)
列中拆分?如果是前者,您最好只在一个简单的列表后面添加一个,然后在for循环之后将该列表转换为一个系列。@pshep123对于歧义,我尝试使每个返回一行,每个元素在一列下。是的,有total
len(tuple)
列。刚刚更新了我的答案,应该做你想要的。