请问用Pandas把数据生成到excel的时候如何避免科学记数法?

发布于 2022-09-07 19:51:53 字数 853 浏览 18 评论 0

问题描述

我从两个不同的excel里读了差异数据,然后把他们放到一个新的excel里,在IDE下显示身份证号一列都正常,但是到了excel里就变成了科学计数法,有办法让身份证号一列直接到excel显示就是纯文本格式的吗?

问题出现的环境背景及自己尝试过哪些方法

在网上找了一阵资料,用了.astype(int64)没好用。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

import pandas as pd
import numpy as np

np.set_printoptions(suppress=True)
df1 = pd.read_excel('A.xlsx') # A表基础数据--基准表
df2 = pd.read_excel('B.xlsx') # B表基础数据
a = df2[(df2['身份证号'] != df1['身份证号']) & (df1['姓名'] == df2['姓名'])]
b = df2[(df2['身份证号'] == df1['身份证号'].astype('str')) & (df1['姓名'] != df2['姓名'])]

X = [a, b]
Z = pd.concat(X)
print(Z)
writer = pd.ExcelWriter('差异.xlsx')
a.to_excel(writer, 'sheet1')
b.to_excel(writer, 'sheet2')
writer.save()

你期待的结果是什么?实际看到的错误信息又是什么?

期待的结果是excel里生成正常的身份证号,实际看到不光没生成正常的身份证号,数字也不对。。。最后四位变成了0000

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

您的好友蓝忘机已上羡 2022-09-14 19:51:53

这个因为excel会处理超过一定位数的大数字。解决方法可以试试在写入前,将身份证那一列的数据类型强制转换为字符串或者说object,即:
a['身份证号'] = a['身份证号'].astype('str')
试一试。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文