鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Python/ 請問用Pandas把數(shù)據(jù)生成到excel的時(shí)候如何避免科學(xué)記數(shù)法?

請問用Pandas把數(shù)據(jù)生成到excel的時(shí)候如何避免科學(xué)記數(shù)法?

問題描述

我從兩個(gè)不同的excel里讀了差異數(shù)據(jù),然后把他們放到一個(gè)新的excel里,在IDE下顯示身份證號一列都正常,但是到了excel里就變成了科學(xué)計(jì)數(shù)法,有辦法讓身份證號一列直接到excel顯示就是純文本格式的嗎?

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

在網(wǎng)上找了一陣資料,用了.astype(int64)沒好用。

相關(guān)代碼

// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)

import pandas as pd
import numpy as np

np.set_printoptions(suppress=True)
df1 = pd.read_excel('A.xlsx') # A表基礎(chǔ)數(shù)據(jù)--基準(zhǔn)表
df2 = pd.read_excel('B.xlsx') # B表基礎(chǔ)數(shù)據(jù)
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()

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

期待的結(jié)果是excel里生成正常的身份證號,實(shí)際看到不光沒生成正常的身份證號,數(shù)字也不對。。。最后四位變成了0000

回答
編輯回答
撿肥皂

這個(gè)因?yàn)閑xcel會處理超過一定位數(shù)的大數(shù)字。解決方法可以試試在寫入前,將身份證那一列的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換為字符串或者說object,即:
a['身份證號'] = a['身份證號'].astype('str')
試一試。

2018年1月27日 23:21