Как преобразовать тип данных при чтении файла CSV, используя pandas? - PullRequest
0 голосов
/ 28 февраля 2020

Я хочу экспортировать foo.csv в свою базу данных, используя pandas. Я использую sqlalchemy для работы с sqlite, и объявляю модель, как в следующем коде:

class House:
 __table__name='house'
    id=db.Column(db.Integer,index=True,primary_key=True)
    city=db.Column(db.String(128),index=True,default="")

Когда я пытаюсь использовать pandas .read_csv, чтобы справиться с этим - вот пример: df=pd.read_csv('path/foo.csv',error_bad_lines=False) Я получил ошибку:

sqlite3.IntegrityError: datatype mismatch

Кажется, pandas считывает данные в виде строки. Я также ищу решение для преобразования типа данных. Это помогает, но все еще не может решить мою проблему, поскольку это происходит:

     File "pandas/_libs/parsers.pyx", line 1173, in pandas._libs.parsers.TextReader._convert_tokens
    TypeError: Cannot cast array from dtype('O') to dtype('int64') according to the rule 'safe'
    ValueError: invalid literal for int() with base 10

вот код, который я попробовал:

import pandas as pd

col_names=pd.read_csv('path/foo.csv',error_bad_lines=False,nrows=0).columns
type_dict={'price':int,'id':int}
type_dict.update({col:str for col in col_names if col not in type_dict})
con=sqlalchemy.create_engine(Config.SQLALCHEMY_DATABASE_URI,echo=True)
df=pd.read_csv('path/foo.csv',error_bad_lines=False,dtype=type_dict)
df.to_sql(name='house',con=con,if_exists='append',index=False)

внимание: я знаю, что вопрос похож на этот. Но я не вижу, чтобы это могло помочь решить эту проблему. Я хочу знать, как решить эту проблему, или есть ли другие приличные способы экспорта CSV в базу данных?

добавил мою часть данных:

id,title,unit,price,latitude
1, US Fut town, 501#2,500,31.199851740354852
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...