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

时间:2017-05-10 11:15:29

标签: pandas dataframe

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

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)

请注意, parser index 已经定义,db是一个leveldb对象,它存储所有链接和相应的html源代码。我的问题是构建DataFrame的更有效方法是什么?谢谢!

1 个答案:

答案 0 :(得分:1)

我会在循环开始之前创建一个数据帧,然后将连续的数据帧附加到该数据帧。请注意,如果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列表然后在完成时从这些列表创建数据帧可能更有效,但是您没有说明元组大小。