错误:使用 pymongo (pandas) 将 CSV 文件导入 mongoDB [英] Error: import CSV file to mongoDB with pymongo (pandas)

查看:153
本文介绍了错误:使用 pymongo (pandas) 将 CSV 文件导入 mongoDB的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些代码想用来导入数据.但我无法指定 pd.read_csv 的属性.根据 Youtube 上的视频制作.绝对是新手,如果您修复了代码,我将不胜感激.

我的错误

<预><代码>集合:Confirmed_global_narrow回溯(最近一次调用最后一次):AttributeError: list' 对象没有属性 'encode'

PLS,我做错了什么?

尝试:进口pymongo从 pymongo 导入 MongoClient将熊猫导入为 pd导入json除了作为 e 的例外:打印(某些模块丢失了")类 MongoDB(对象):def __init__(self, dBName=None, collectionName=None):self.dBName = dBNameself.collectionName = 集合名称self.client = MongoClient("localhost", 27017)self.DB = self.client[self.dBName]self.collection = self.DB[self.collectionName]打印(集合:",集合名称)def InsertData(self, path = None, parse_dates = None, dtype = None, skiprows = None):df = pd.read_csv(path, parse_dates, dtype, skiprows)数据 = df.to_dict('记录')self.collection.insert_many(数据)print("所有数据已经​​导出到Mongo DB Server")如果 __name__ == __main__":mongodb = MongoDB(dBName = 'CovidModel', collectionName='Confirmed_global_narrow')mongodb.InsertData(path = "https://data.humdata.org/hxlproxy/data/download/time_series_covid19_confirmed_global_narrow.csv?dest=data_edit&filter01=merge&merge-url01=https%3A%2F%2Fdocs.google.COM%2Fspreadsheets%2FD%的2Fe%2F2PACX-1vTglKQRXpkKSErDiWG6ycqEth32MY0reMuVGhaslImLjfuLU0EUgyyu2e-3vKDArjqGX7dXEBV8FJ4f%2Fpub%3Fgid%3D1326629740%26single%3Dtrue%26output%3Dcsv&安培;合并-keys01 =%23country%2Bname&安培;合并-tags01 =%23country%2Bcode%2C%23region%2Bmain%2Bcode%2C%23region%2Bsub%2Bcode%2C%23region%2Bintermediate%2Bcode&filter02=merge&merge-url02=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2Fe%2F2PACKGSEKuGycyycyycyvgsekyycyvgsekyycyvgsekyvgseq0gseq0gseq0gsekyycgsemgs3vKDArjqGX7dXEBV8FJ4f%2Fpub%3Fgid%3D398158223%26single%3Dtrue%26output%3Dcsv&merge-keys02=%23adm1%2Bname&merge-tags02=%23code%2Bcode2Bcode%2Bmain%2Bcode2Bmain%C2C%23region%2Bintermediate%2Bcode&merge-replace02=on&merge-overwrite02=on&filter03=explode&explode-header-att03=date&explode-value-att03=value&filter04=rename&rename-oldtag04=%23affected%2Bdate&rename-newtag04=%23date&rename-header04=Date&filter05=rename&rename-oldtag04%2Bvalue&rename-newtag05=%23affected%2Binfected%2Bvalue%2Bnum&rename-header05=Value&filter06=clean&clean-date-tags06=%23date&filter07=sort&sort-tags07=%23date=reverse&7;on&filter08=sort&sort-tags08=%23country%2Bname%2C%23adm1%2Bname&tagger-match-all=on&tagger-default-tag=%23affected%2Blabel&tagger-01-header=province%2Fstate&tagger-01-tag=%23adm1%2Bname&tagger-02-header=country%2Fregion&tagger-02-tag=%23country%2Bname&tagger-03-header=lat&tagger-03-tag=%23geo%2Blat&tagger-04-header=long&tagger-04-tag=%23geo%2Blon&header-row=1&url=https%3A%2F%2Fraw.githubusercontent.com%2FCSSEGISandData%2FCOVID-19%2Fmaster%2Fcsse_covid_19_data%2Fcsse_covid_19_time_series%2Ftime_series_covid19_confirmed_global.csv",parse_dates = [日期"])mongodb = MongoDB(dBName = 'CovidModel', collectionName='Beds')mongodb.InsertData(路径=https://raw.githubusercontent.com/hf2000510/infectious_disease_modelling/master/data/beds.csv")

解决方案

您向 read_csv() 传递了不正确的参数.如果您不指定参数名称,它们将按顺序传递 根据文档.

您可能可以通过以下方式解决问题:

df = pd.read_csv(path, parse_dates=parse_dates, dtype=dtype, skiprows=skiprows)

I have a little code that I want to use to import data. But I just can't specify the attributes for pd.read_csv. Made based on video on Youtube. Absolutely new to this, if you fix the code, I will be very grateful.

My error


Collection:  Confirmed_global_narrow
Traceback (most recent call last):

AttributeError: list' object has no attribute 'encode'

PLS, what am I doing wrong?

try:
    import pymongo
    from pymongo import MongoClient
    import pandas as pd
    import json
except Exception as e:
    print("Some Modules are Missing ")


class MongoDB(object):

    def __init__(self, dBName=None, collectionName=None):

        self.dBName = dBName
        self.collectionName = collectionName

        self.client = MongoClient("localhost", 27017)

        self.DB = self.client[self.dBName]
        self.collection = self.DB[self.collectionName]
        print("Collection: " ,collectionName) 

    def InsertData(self, path = None, parse_dates = None, dtype = None, skiprows = None):

        df = pd.read_csv(path, parse_dates, dtype, skiprows)
        data = df.to_dict('records')

        self.collection.insert_many(data)
        print("All the Data has been Exported to Mongo DB Server")

if __name__ == "__main__":
    
    mongodb = MongoDB(dBName = 'CovidModel', collectionName='Confirmed_global_narrow')
    mongodb.InsertData(path = "https://data.humdata.org/hxlproxy/data/download/time_series_covid19_confirmed_global_narrow.csv?dest=data_edit&filter01=merge&merge-url01=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2Fe%2F2PACX-1vTglKQRXpkKSErDiWG6ycqEth32MY0reMuVGhaslImLjfuLU0EUgyyu2e-3vKDArjqGX7dXEBV8FJ4f%2Fpub%3Fgid%3D1326629740%26single%3Dtrue%26output%3Dcsv&merge-keys01=%23country%2Bname&merge-tags01=%23country%2Bcode%2C%23region%2Bmain%2Bcode%2C%23region%2Bsub%2Bcode%2C%23region%2Bintermediate%2Bcode&filter02=merge&merge-url02=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2Fe%2F2PACX-1vTglKQRXpkKSErDiWG6ycqEth32MY0reMuVGhaslImLjfuLU0EUgyyu2e-3vKDArjqGX7dXEBV8FJ4f%2Fpub%3Fgid%3D398158223%26single%3Dtrue%26output%3Dcsv&merge-keys02=%23adm1%2Bname&merge-tags02=%23country%2Bcode%2C%23region%2Bmain%2Bcode%2C%23region%2Bsub%2Bcode%2C%23region%2Bintermediate%2Bcode&merge-replace02=on&merge-overwrite02=on&filter03=explode&explode-header-att03=date&explode-value-att03=value&filter04=rename&rename-oldtag04=%23affected%2Bdate&rename-newtag04=%23date&rename-header04=Date&filter05=rename&rename-oldtag05=%23affected%2Bvalue&rename-newtag05=%23affected%2Binfected%2Bvalue%2Bnum&rename-header05=Value&filter06=clean&clean-date-tags06=%23date&filter07=sort&sort-tags07=%23date&sort-reverse07=on&filter08=sort&sort-tags08=%23country%2Bname%2C%23adm1%2Bname&tagger-match-all=on&tagger-default-tag=%23affected%2Blabel&tagger-01-header=province%2Fstate&tagger-01-tag=%23adm1%2Bname&tagger-02-header=country%2Fregion&tagger-02-tag=%23country%2Bname&tagger-03-header=lat&tagger-03-tag=%23geo%2Blat&tagger-04-header=long&tagger-04-tag=%23geo%2Blon&header-row=1&url=https%3A%2F%2Fraw.githubusercontent.com%2FCSSEGISandData%2FCOVID-19%2Fmaster%2Fcsse_covid_19_data%2Fcsse_covid_19_time_series%2Ftime_series_covid19_confirmed_global.csv", 
                       parse_dates = ["Date"])
    
    mongodb = MongoDB(dBName = 'CovidModel', collectionName='Beds')
    mongodb.InsertData(path="https://raw.githubusercontent.com/hf2000510/infectious_disease_modelling/master/data/beds.csv")

解决方案

You are passing incorrect parameters to read_csv(). If you don't specify the parameter names they are passed in the order as per the documentation.

You can likely fix you issue with:

df = pd.read_csv(path, parse_dates=parse_dates, dtype=dtype, skiprows=skiprows)

这篇关于错误:使用 pymongo (pandas) 将 CSV 文件导入 mongoDB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆