现在我已经编写了一个解析器来从原始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的更有效方法是什么?谢谢!
答案 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列表然后在完成时从这些列表创建数据帧可能更有效,但是您没有说明元组大小。