首页 > 解决方案 > 从 MongoDB 字典到 Dataframe 映射

问题描述

在我之前的问题中,我将 DF 转换为要上传到 MongoDB 的字典列表。

现在我正在做相反的工作。从 MongoDB 查询中,我可以下载包含以下信息的字典列表:

[
{Info1: 3,
 City: BCN,
 Country: Spain},

{Info2: 5.6,
 City: BCN,
 Country: Spain},

{Info1: 4,
 City: Moscow,
 Country: Russia},

{Info2: 7,
 City: Moscow,
 Country: Russia}
]

现在我想创建一个表如下:

City    Country   Info1  Info2
BCN      Spain    3      5.6   
Moscow   Russia   4      7   

我现在这样做的方式如下:

  def generate_excel(ind_type):
     # first add columns
     columns = ["City", "Country"]

     # then  find all indictors filtered
     indicators = []
     for indicator in CUSTOMERS_COLLECTION.find().distinct("ID"):
         indicators.append(indicator)

     # then add the indicators in column
     columns = columns + indicators

     # First find all Ciudades
     cities = CUSTOMERS_COLLECTION.find()

      rows_list = []
     for ciudad in cities.distinct("City"):
        indicators = CUSTOMERS_COLLECTION.find({"City": ciudad})
        dict_ind = {}
        # then we create a dict of the indicators. It will be the row
        for indicator in indicators:
            dict_ind[indicator["ID"]] = indicator["Valor"]
            dict_ind["Country"] = indicator["Country"]
            dict_ind["City"] = indicator["City"]

     df_ = pd.DataFrame(rows_list, columns=columns)
     return df_

与我之前的问题一样,这可行,但似乎根本没有优化。MongoDB 或 DF 是否有任何功能可以正确映射字典?

谢谢!!

标签: pandasmongodbdataframedictionary

解决方案


我不是 100% 这对你有用,但在过去我已经能够简单地将 mongo 查询转换为数据帧。例如:

q1=db.collection.find(#add whatever filters you need)
df= pd.DataFrame(q1)

请告诉我这是否有效。


推荐阅读