当数据列/行中存在文本时,使用具有定义的浮点精度的 pandas read_excel

问题描述 投票:0回答:1

我对 python 相当陌生(MATLAB 和工程背景),并且遇到了一个问题。

我收到了这些 Excel 文件,其中包含标题部分,然后是其下面的数据部分。数据部分有数字、一些日期(对我来说不重要)和字符串。我正在编写一段代码来解析其中的文件和工作表(有多种)并将它们编译成 df/objects,这样我就可以将它们操纵为我的后处理内容(la MATLAB)。

现在我遇到的问题是,使用 pd.read_excel 时,我的一些数据很好,但其中一些数据很小(数量级为千分之一、千分之十) 和万分之一)并且作为 0 值整数而不是浮点数导入(下面的示例)。我尝试过使用 astype、dtype 和其他一些形式的转换,但它要么完全消除字符串(我需要用它来锚定代码的某些部分,因为它解析特定的东西或缺少它们),要么消除列中的字符串,其中问题正在出现(我仍然需要使用/保持完整)。其他方法完全给我错误:/

我已确认工作表中的数据良好并包含其预期值。我注意到一些旧帖子的精度问题在于 Excel。我的情况并非如此。

如何定义某些不同单元格或一般数字的浮动精度而不弄乱工作表中的字符串?这些出现的具体位置(行和列)因工作表而异,因此硬编码数组或 Excel 位置并不是一个好的解决方案,而且有如此多的集合/工作表,手动编辑 Excel 文件对我来说是不可能的。我唯一能想到的就是一旦我有某种变量引用,我可能会发现这些错误的零值,但再次这似乎很麻烦而且效率低下,就在中途重新导入Excel数据。我希望可能有一些优雅的解决方法。

提前致谢!

-吱吱作响 编辑:答案帮助我意识到我正在引用一个过时的文件。 read_excel 实际上按预期工作,并在更新文件路径后为我提供了我正在寻找的值。


工作表.xlsx

标题 1 标题 2 标题 3
文字 12 0.0001
NaN 0.001 文字
文字 文字 11

Python 代码

将 pandas 导入为 pd

目录 = C:\Data

sheet=sheet1.xlsx

importdata = pd.read_excel(目录,sheet_name=sheet,标题=无)

print(importdata.loc[2,1]) #得到这个

output: 0

print(importdata.loc[1,1]) #想要更精确...可以使用 12.00000 或其他值

output: 12
python pandas precision
1个回答
0
投票

我没有遇到这种行为,也许是因为您没有正确导入数据或者没有打印正确的值。这是我使用您的输入文件示例测试的代码。

import pandas as pd
import_data=pd.read_excel('sheet1.xlsx', sheet_name=0)
print(import_data.loc[1,'header 2']) 

输出结果为

0.001

正如预期的那样。

© www.soinside.com 2019 - 2024. All rights reserved.