Pandas 从MongoDB字典到数据帧映射
在我的示例中,我将DF转换为DICT列表以上传到MongoDB 现在我正在做相反的工作。从MongoDB查询中,我可以下载包含以下信息的DICT列表:Pandas 从MongoDB字典到数据帧映射,pandas,mongodb,dataframe,dictionary,Pandas,Mongodb,Dataframe,Dictionary,在我的示例中,我将DF转换为DICT列表以上传到MongoDB 现在我正在做相反的工作。从MongoDB查询中,我可以下载包含以下信息的DICT列表: [ {Info1: 3, City: BCN, Country: Spain}, {Info2: 5.6, City: BCN, Country: Spain}, {Info1: 4, City: Moscow, Country: Russia}, {Info2: 7, City: Moscow, Country: Russ
[
{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_
我现在的做法如下:
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中是否有允许正确映射字典的功能
谢谢 我不是100%的认为这对您有效,但在过去,我能够简单地将mongo查询转换为数据帧。例如:
q1=db.collection.find(#add whatever filters you need)
df= pd.DataFrame(q1)
请告诉我这是否有效