Python 从PyMongo游标/迭代器加载数据帧的速度太慢

Python 从PyMongo游标/迭代器加载数据帧的速度太慢,python,mongodb,pandas,dataframe,pymongo,Python,Mongodb,Pandas,Dataframe,Pymongo,我必须从另一个国家的mongo数据库中提取230000个文档,并将它们加载到数据帧中 cursor=mydb.mycollection.find(过滤器,{“投影1”:1,“投影2”:1,“投影3”:1,…,“投影18”:1},批大小=25000)立即查找数据,但使用df=dataframe(列表(光标))将数据传输到数据帧需要24秒,这太长了 我尝试将迭代器转换为多个小数据帧并将它们连接起来,但结果是相同的(24秒): 我怎样才能加快速度?特别是在某一点上,我必须在尽可能短的时间内使用3000

我必须从另一个国家的mongo数据库中提取230000个文档,并将它们加载到数据帧中

cursor=mydb.mycollection.find(过滤器,{“投影1”:1,“投影2”:1,“投影3”:1,…,“投影18”:1},批大小=25000)
立即查找数据,但使用
df=dataframe(列表(光标))
将数据传输到数据帧需要24秒,这太长了

我尝试将迭代器转换为多个小数据帧并将它们连接起来,但结果是相同的(24秒):

我怎样才能加快速度?特别是在某一点上,我必须在尽可能短的时间内使用3000-4000万个Mongo文档加载数据帧

有没有一种方法可以使用数据帧的大容量转储

    def iterator2dataframes(iterator, chunk_size: int):
      """Turn an iterator into multiple small pandas.DataFrame
      This is a balance between memory and efficiency"""
      records = []
      frames = []
      for i, record in enumerate(iterator):
          records.append(record)
          if i % chunk_size == chunk_size - 1:
              frames.append(pd.DataFrame(records))
              records = []
      if records:
          frames.append(pd.DataFrame(records))
      return pd.concat(frames)
    df = iterator2dataframes(cursor, 25000)