我正在从SQL Server导入一些数据,并将其转换为带有pandas的数据框,如下所示:
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server;UID=user;PWD=password')
DF = pd.read_sql_query("SELECT * FROM file", cnxn, chunksize = 20000)
一切正常,直到我不得不处理一个非常大的文件。为了保留内存,read_sql_query函数停止向我返回一个数据框对象,并开始返回一个生成器对象。
问题是我必须创建新文件来合并数据框对象和生成器。我可以将生成器转换为将数据块包装到列表中的数据帧,然后将它们串联到数据帧中,例如
list_of_chunks = []
for chunk in generator:
list_of_chunks.append(chunk)
df = pd.concat(list_of_chunks)
可以正常工作,但是会占用太多内存。有更有效的方法吗?