带有嵌套值的pymongo游标到数据框中
pymongo cursor with nested values into dataframe
我有以下 pymongo 游标:
{'_id': ObjectId('61d7088333a0edbcbdc7332f'), 'TICKET_ID': {'0': '35592159', '1': '35592159', '2': '35592159', '3': '35592159', '4': '35592159'}, 'MOIS_VENTE': {'0': '10', '1': '10', '2': '10', '3': '10', '4': '10'}, 'PRIX_NET': {'0': '1.67', '1': '1.66', '2': '7.45', '3': '5.95', '4': '1.67'}, 'FAMILLE': {'0': 'HYGIENE', '1': 'HYGIENE', '2': 'SOINS DU VISAGE', '3': 'SOINS DU VISAGE', '4': 'HYGIENE'}, 'UNIVERS': {'0': 'HYG_DOUCHE JARDINMONDE', '1': 'HYG_DOUCHE JARDINMONDE', '2': 'VIS_CJOUR Jeunes Specifique', '3': 'VIS_DEMAQ AAAR', '4': 'HYG_DOUCHE JARDINMONDE'}, 'MAILLE': {'0': 'HYG_JDM', '1': 'HYG_JDM', '2': 'VIS_JEUNE_ET_LEVRE', '3': 'VIS_AAAR_DEMAQLOTION', '4': 'HYG_JDM'}, 'LIBELLE': {'0': 'GD JDM4 PAMPLEMOUSSE FL 200ML', '1': 'GD JDM4 PAMPLEMOUSSE FL 200ML', '2': 'CR JR PARF BIO.SPE AC.SENT.50ML', '3': 'EAU MICELLAIRE 3 THES FL200ML', '4': 'GD JDM4 TIARE FL 200ML'}, 'CLI_ID': {'0': '1490281', '1': '1490281', '2': '1490281', '3': '1490281', '4': '1490281'}}
我想从上面的光标制作以下数据框:
TICKET_ID MOIS_VENTE PRIX_NET FAMILLE UNIVERS MAILLE LIBELLE CLI_ID
0 35592159 10 1.67 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 PAMPLEMOUSSE FL 200ML 1490281
1 35592159 10 1.66 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 PAMPLEMOUSSE FL 200ML 1490281
2 35592159 10 7.45 SOINS DU VISAGE VIS_CJOUR Jeunes Specifique VIS_JEUNE_ET_LEVRE CR JR PARF BIO.SPE AC.SENT.50ML 1490281
3 35592159 10 5.95 SOINS DU VISAGE VIS_DEMAQ AAAR VIS_AAAR_DEMAQLOTION EAU MICELLAIRE 3 THES FL200ML 1490281
4 35592159 10 1.67 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 TIARE FL 200ML 1490281
我尝试了以下方法,但结果不是我所期望的...
fields = ['TICKET_ID', 'MOIS_VENTE', 'PRIX_NET', 'FAMILLE', 'UNIVERS', 'MAILLE', 'LIBELLE','CLI_ID']
r = pd.DataFrame(list(cursor), columns = fields)
r
提前感谢您的建议!
由于您的所有数据都在一条记录中,因此默认使用 find_one()
作为 returns 和 dict
。然后您可以将 dict
传递给 pandas 而无需其他选项,您的数据框将按照您的需要构建。
import pandas as pd
from pymongo import MongoClient
# Load some test data
db = MongoClient()['mydatabase']['mycollection']
db.insert_one({'TICKET_ID': {'0': '35592159', '1': '35592159', '2': '35592159', '3': '35592159', '4': '35592159'}, 'MOIS_VENTE': {'0': '10', '1': '10', '2': '10', '3': '10', '4': '10'}, 'PRIX_NET': {'0': '1.67', '1': '1.66', '2': '7.45', '3': '5.95', '4': '1.67'}, 'FAMILLE': {'0': 'HYGIENE', '1': 'HYGIENE', '2': 'SOINS DU VISAGE', '3': 'SOINS DU VISAGE', '4': 'HYGIENE'}, 'UNIVERS': {'0': 'HYG_DOUCHE JARDINMONDE', '1': 'HYG_DOUCHE JARDINMONDE', '2': 'VIS_CJOUR Jeunes Specifique', '3': 'VIS_DEMAQ AAAR', '4': 'HYG_DOUCHE JARDINMONDE'}, 'MAILLE': {'0': 'HYG_JDM', '1': 'HYG_JDM', '2': 'VIS_JEUNE_ET_LEVRE', '3': 'VIS_AAAR_DEMAQLOTION', '4': 'HYG_JDM'}, 'LIBELLE': {'0': 'GD JDM4 PAMPLEMOUSSE FL 200ML', '1': 'GD JDM4 PAMPLEMOUSSE FL 200ML', '2': 'CR JR PARF BIO.SPE AC.SENT.50ML', '3': 'EAU MICELLAIRE 3 THES FL200ML', '4': 'GD JDM4 TIARE FL 200ML'}, 'CLI_ID': {'0': '1490281', '1': '1490281', '2': '1490281', '3': '1490281', '4': '1490281'}})
# Fetch the data from MongoDB
data = db.find_one({}, {'_id': 0})
df = pd.DataFrame(data)
# Pretty up the output
pd.options.display.max_columns = None
pd.options.display.width = None
print(df)
打印:
TICKET_ID MOIS_VENTE PRIX_NET FAMILLE UNIVERS MAILLE LIBELLE CLI_ID
0 35592159 10 1.67 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 PAMPLEMOUSSE FL 200ML 1490281
1 35592159 10 1.66 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 PAMPLEMOUSSE FL 200ML 1490281
2 35592159 10 7.45 SOINS DU VISAGE VIS_CJOUR Jeunes Specifique VIS_JEUNE_ET_LEVRE CR JR PARF BIO.SPE AC.SENT.50ML 1490281
3 35592159 10 5.95 SOINS DU VISAGE VIS_DEMAQ AAAR VIS_AAAR_DEMAQLOTION EAU MICELLAIRE 3 THES FL200ML 1490281
4 35592159 10 1.67 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 TIARE FL 200ML 1490281
我有以下 pymongo 游标:
{'_id': ObjectId('61d7088333a0edbcbdc7332f'), 'TICKET_ID': {'0': '35592159', '1': '35592159', '2': '35592159', '3': '35592159', '4': '35592159'}, 'MOIS_VENTE': {'0': '10', '1': '10', '2': '10', '3': '10', '4': '10'}, 'PRIX_NET': {'0': '1.67', '1': '1.66', '2': '7.45', '3': '5.95', '4': '1.67'}, 'FAMILLE': {'0': 'HYGIENE', '1': 'HYGIENE', '2': 'SOINS DU VISAGE', '3': 'SOINS DU VISAGE', '4': 'HYGIENE'}, 'UNIVERS': {'0': 'HYG_DOUCHE JARDINMONDE', '1': 'HYG_DOUCHE JARDINMONDE', '2': 'VIS_CJOUR Jeunes Specifique', '3': 'VIS_DEMAQ AAAR', '4': 'HYG_DOUCHE JARDINMONDE'}, 'MAILLE': {'0': 'HYG_JDM', '1': 'HYG_JDM', '2': 'VIS_JEUNE_ET_LEVRE', '3': 'VIS_AAAR_DEMAQLOTION', '4': 'HYG_JDM'}, 'LIBELLE': {'0': 'GD JDM4 PAMPLEMOUSSE FL 200ML', '1': 'GD JDM4 PAMPLEMOUSSE FL 200ML', '2': 'CR JR PARF BIO.SPE AC.SENT.50ML', '3': 'EAU MICELLAIRE 3 THES FL200ML', '4': 'GD JDM4 TIARE FL 200ML'}, 'CLI_ID': {'0': '1490281', '1': '1490281', '2': '1490281', '3': '1490281', '4': '1490281'}}
我想从上面的光标制作以下数据框:
TICKET_ID MOIS_VENTE PRIX_NET FAMILLE UNIVERS MAILLE LIBELLE CLI_ID
0 35592159 10 1.67 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 PAMPLEMOUSSE FL 200ML 1490281
1 35592159 10 1.66 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 PAMPLEMOUSSE FL 200ML 1490281
2 35592159 10 7.45 SOINS DU VISAGE VIS_CJOUR Jeunes Specifique VIS_JEUNE_ET_LEVRE CR JR PARF BIO.SPE AC.SENT.50ML 1490281
3 35592159 10 5.95 SOINS DU VISAGE VIS_DEMAQ AAAR VIS_AAAR_DEMAQLOTION EAU MICELLAIRE 3 THES FL200ML 1490281
4 35592159 10 1.67 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 TIARE FL 200ML 1490281
我尝试了以下方法,但结果不是我所期望的...
fields = ['TICKET_ID', 'MOIS_VENTE', 'PRIX_NET', 'FAMILLE', 'UNIVERS', 'MAILLE', 'LIBELLE','CLI_ID']
r = pd.DataFrame(list(cursor), columns = fields)
r
提前感谢您的建议!
由于您的所有数据都在一条记录中,因此默认使用 find_one()
作为 returns 和 dict
。然后您可以将 dict
传递给 pandas 而无需其他选项,您的数据框将按照您的需要构建。
import pandas as pd
from pymongo import MongoClient
# Load some test data
db = MongoClient()['mydatabase']['mycollection']
db.insert_one({'TICKET_ID': {'0': '35592159', '1': '35592159', '2': '35592159', '3': '35592159', '4': '35592159'}, 'MOIS_VENTE': {'0': '10', '1': '10', '2': '10', '3': '10', '4': '10'}, 'PRIX_NET': {'0': '1.67', '1': '1.66', '2': '7.45', '3': '5.95', '4': '1.67'}, 'FAMILLE': {'0': 'HYGIENE', '1': 'HYGIENE', '2': 'SOINS DU VISAGE', '3': 'SOINS DU VISAGE', '4': 'HYGIENE'}, 'UNIVERS': {'0': 'HYG_DOUCHE JARDINMONDE', '1': 'HYG_DOUCHE JARDINMONDE', '2': 'VIS_CJOUR Jeunes Specifique', '3': 'VIS_DEMAQ AAAR', '4': 'HYG_DOUCHE JARDINMONDE'}, 'MAILLE': {'0': 'HYG_JDM', '1': 'HYG_JDM', '2': 'VIS_JEUNE_ET_LEVRE', '3': 'VIS_AAAR_DEMAQLOTION', '4': 'HYG_JDM'}, 'LIBELLE': {'0': 'GD JDM4 PAMPLEMOUSSE FL 200ML', '1': 'GD JDM4 PAMPLEMOUSSE FL 200ML', '2': 'CR JR PARF BIO.SPE AC.SENT.50ML', '3': 'EAU MICELLAIRE 3 THES FL200ML', '4': 'GD JDM4 TIARE FL 200ML'}, 'CLI_ID': {'0': '1490281', '1': '1490281', '2': '1490281', '3': '1490281', '4': '1490281'}})
# Fetch the data from MongoDB
data = db.find_one({}, {'_id': 0})
df = pd.DataFrame(data)
# Pretty up the output
pd.options.display.max_columns = None
pd.options.display.width = None
print(df)
打印:
TICKET_ID MOIS_VENTE PRIX_NET FAMILLE UNIVERS MAILLE LIBELLE CLI_ID
0 35592159 10 1.67 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 PAMPLEMOUSSE FL 200ML 1490281
1 35592159 10 1.66 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 PAMPLEMOUSSE FL 200ML 1490281
2 35592159 10 7.45 SOINS DU VISAGE VIS_CJOUR Jeunes Specifique VIS_JEUNE_ET_LEVRE CR JR PARF BIO.SPE AC.SENT.50ML 1490281
3 35592159 10 5.95 SOINS DU VISAGE VIS_DEMAQ AAAR VIS_AAAR_DEMAQLOTION EAU MICELLAIRE 3 THES FL200ML 1490281
4 35592159 10 1.67 HYGIENE HYG_DOUCHE JARDINMONDE HYG_JDM GD JDM4 TIARE FL 200ML 1490281