【问题标题】:Python reading csv with 13 digit ISBN number converts into scientific notationPython读取具有13位ISBN编号的csv转换为科学计数法
【发布时间】:2017-11-21 04:55:44
【问题描述】:

我有一个 python 程序,它给了我大约 200 个 csv 文件,每个文件有 25 条记录。我想将这 200 个文件合并为一个文件 csv 并将其加载到 SQL Server 中。 (我假设这是加载的好方法)

我的最终目标是拥有一个包含 200 个 csv 数据的 csv 文件,并将数据加载到 SQL 服务器上。

所有文件都有相同的列。其中一列包含 ISBN-13 书号。 当我通过以下代码合并文件时,ISBN-13 数字被转换为科学计数法(9780981454221 被转换为 9.78098145422e+12)并且我丢失了信息。 (像最后一个数字) 有什么办法可以避免这种情况。这是我的代码和示例数据

import pandas as pd
import os
import csv
import glob

os.chdir("//network/My Folder/")
df=pd.DataFrame()
for files in glob.glob("*.csv"):
    print files 
    df = pd.concat([df,pd.read_csv(files)],axis=0)
df.to_csv("test.csv", sep=',', encoding='utf-8',index=False)

csv 文件中的数据

Book    ISBN-13
Book_1  9780262527132
Book_2  9780071495844
Book_3  9780679734031
Book_4  9781621840862
Book_5  9781614271352

我是 Python 和 DB 的新手。任何建议,将不胜感激。 提前谢谢!

【问题讨论】:

    标签: python sql-server pandas csv


    【解决方案1】:

    使用dtype=str:

    for files in glob.glob("*.csv"):
        print files 
        df = pd.concat([df,pd.read_csv(files, dtype={'ISBN-13':str})],axis=0)
    

    【讨论】:

    • 现在将 df 加载到 SQL 中。第一次尝试,我知道我会遇到很多问题。有什么建议可以帮助我避免任何常见问题?
    • " 将 df 加载到 SQL" - df.to_sql(...) - 最简单也是迄今为止最有效的方法...
    • 我有一个 10 分钟的计时器才能接受答案。它也只记录“回答有用”的反馈,但由于我的声誉分数低于 15,因此不显示我的回复。将尝试查看如何使用我的登录凭据将其加载到 SQL 服务器并能够定期更新它。非常感谢您的帮助!!
    • @NeilS,当然!您会在 StackOverflow (example) 上找到大量关于如何将 df.to_sql() 与 SQL Alchemy 结合使用的示例 - 祝你好运!如果您有任何问题并且在 SO 上找不到答案 - 只需打开一个新问题
    • 我确实遇到了问题here is the question
    猜你喜欢
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 2016-08-17
    相关资源
    最近更新 更多