pymon go как вставить CSV-файл в mongodb - PullRequest
0 голосов
/ 03 мая 2020

У меня есть CSV-файл "data.csv" со следующими данными:

Я сейчас пытаюсь загрузить этот CSV в MongoDB с кодом ниже:

import pandas as pd
import os
path="/Users/xxxx/Desktop/" -- Filepath
os.chdir(path)
from pymongo import MongoClient
client = MongoClient('internal-xxx.xxx.ai:1234',
                     username='xxx',
                     password='xxx',
                     authMechanism='SCRAM-SHA-1')
db=client["dbname"]
-- Creating a new collection with name "collectionname"
db_c=db["collectionname"] 
x=db_c.count_documents({}) -- Since its new one the count will be empty

def csv_to_json(filename, header=None):
    data = pd.read_csv(filename, header=header)
    return data.to_dict('records')

print(csv_to_json('inspector1.csv'))
-- Below is the print result 
# [{0: 'RAISED_BY', 1: 'RAISED_ON', 2: 'A', 3: 'B', 4: 'C'}, 
#  {0: '32050', 1: '3/5/20', 2: '0', 3: '0', 4: '50'}, 
#  {0: '32217', 1: '3/5/20', 2: '0', 3: '0', 4: '6'}, 
#  {0: '46212', 1: '3/5/20', 2: '0', 3: '0', 4: '7'}, 
#  {0: '31871', 1: '3/5/20', 2: '0', 3: '0', 4: '6'}, 
#  {0: '32567', 1: '3/5/20', 2: '0', 3: '0', 4: '6'}]

db_c.insert_many(csv_to_json('inspector.csv'))

# Error encountered : InvalidDocument: documents must have only string keys, key was 0

Я думаю, что проблема заключается в преобразовании CSV в json, почему я получаю 0:, 1:, 2 :, et c .. in фронт всех элементов данных. Можете ли вы, ребята, помочь мне в сортировке этого? По сути, я хотел вставить свои CSV-файлы в Mon go DB?

1 Ответ

0 голосов
/ 03 мая 2020

pd.read_csv() использует индексирование по умолчанию pandas. Чтобы получить его для индексации на основе заголовка, используйте параметр header=0; в вашем случае изменение будет:

db_c.insert_many(csv_to_json('inspector.csv', header=0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...