栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

用pandas写入数据到excel,如何避免长数据被保存为科学计数法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用pandas写入数据到excel,如何避免长数据被保存为科学计数法

1.先看数据库查询数据展示的效果:

直接通过pandas写入到excel表显示变为科学计数法:

2.我们想通过pandas将数据库查询结果写入到一个excel表或csv文件中,其展示效果跟数据库展示须一致

3.查询语句代码如下:

def sql_query(num, sql):
    db = pymysql.connect(host=host, database=database, user=user, password=password, port=port)
    cursor = db.cursor()
    cursor.execute(sql)
    if num == 1:
        data = cursor.description
    else:
        data = cursor.fetchall()
    cursor.close()
    db.close()
    return data

if __name__ == "__main__":
    sql = "select * from ztc_online_sales_customer limit 10"
    #传参数1,代表获取数据库所有的字段名存放到一个列表a中
    a = [i[0] for i in sql_query(1, sql)]
    #传参数2代表sql查询结果
    data = sql_query(2, sql)
    #通过sql返回的查询结果dat是一个二元元组(即元组嵌套元组),通过for循环取出每一个元组用list()将其转换为列表,在通过zip()函数将列表a和列表list(i)合并后再次通过list()函数转换,形成一个元组列表,然后用dict()函数和列表生成式形成一个字典列表result
    result = [dict(list(zip(a, list(i)))) for i in data]
    
    df = pd.DataFrame(result )
    #由于我们id和order_id在数据库中是类型是整形数据,长度过长,写入到excel表将会自动被转换为科学计数法显示。
    #解决办法:将转化为科学计数法的2列数据id和order_id转为字符串str,可解决此问题。代码如下
    df["id"] = df['id'].astype(str)
    df["order_id"] = df["order_id"].astype(str)
    df.to_excel(r"C:Users陌上玉Desktop资料02.xlsx")

4.最后excel表展示的查询结果跟数据库保持一致:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/958315.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号