如何防止数据丢失在Pandas.to_excel当处理很长的数字串

mgdq6dx1  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(268)

这是我的输入文件(csv)
| 标识符1、标识符2|
| - ------|
| 233924749247492472,9284372492472497294749|
| 298347230474308444、9472943274947429427477年|
我想在 Dataframe 中读取此文件,删除分隔符,然后将其写回到. xlsx文件中
一些代码组合,我已经尝试过
尝试1:

df2 = pd.read_csv(path,  sep=Delimiter, float_precision=None )
pd.options.display.float_format = '{:.1f}'.format
df2.to_excel(filepath, index=False)

尝试2:

df2 = pd.read_csv(path, sep=delimiter)
writer = pd.ExcelWriter(path, engine=None)
df3.to_excel(writer, index=False)

尝试三:

df2 = pd.read_csv(path, sep=delimiter)
df3.to_excel(path, index=False)

每次我在excel文件中得到相同的输出
我在第一列中看到数据丢失。输出如下所示:
| 识别码1|身份2|
| - ------|- ------|
| 小行星233924749247493000|小行星92843724924724972|
| 小行星2983|小行星9472943|

wecizke3

wecizke31#

默认情况下,Pandas会将整数转换为int64。这对于-2⁶³2⁶³-1 = 9223372036854775807之间的整数来说已经足够了。所以如果列中的任何元素超过了这个值,Pandas会将列类型设置为object。
显然,Excel会截断big int(小于2⁶³-1),但不会截断对象,因此,一个解决方案是将所有列的dtype设置为对象:

pd.read_csv('input.csv', dtype=object).to_excel('output.xlsx')

相关问题