我有一个 xml 文件,其中包含大约 15000 个值。我使用
阅读它导入 xml.etree.ElementTree 作为 ET
我如何提取值的示例是
def get_year1_quantity(元素):
返回元素[5][0].text
我获取了所有数据并将不同的值放入列表中,然后将它们放入 pandas 数据框中。
我尝试通过以下方式过滤数据:
filtered=this[this.Year1_Q > this.Year2_Q]
一切都很顺利,直到我查看了 csv 文件中的数据。只有少数值作为字符串加载。根据值,它们以 float 或整数形式进入 Excel。我试过了
Year1_Q=[Year1_Q 中 x 的映射(int, x)]
Year1_P=[Year1_P 中 x 的映射(float, x)]
Year2_Q=[Year2_Q 中 x 的映射(int, x)]
Year2_P=[Year2_P 中 x 的映射(float, x)]
但它给了我一个错误,Year1_Q=[map(int, x) for x in Year1_Q]
ValueError:无法将字符串转换为 int:
有些数字作为数字加载,而另一些数字作为字符串加载,这对我来说没有意义。它们在 xml 文件中是相同的。
有人遇到过这个问题吗?
我尝试了 this[columns]=this[columns].astype(float)
并得到了 float() 的无效文字:6,625.00
最佳答案
XML 是一个文本文件,只有您知道它应该被解释为字符串还是数字。当您需要将其作为 Python 中的数字时,您必须显式转换它(就像处理 map 一样)。 CSV 也是一种文本格式。
你可以使用
try:
Year1_Q=[map(int, x) for x in Year1_Q]
except ValueError:
print(repr(Year1_Q))
使有问题的值可见。
CSV 不是 native Excel 格式。 Excel 可能是该受到指责的工具。当您双击 CSV 文件或启动 Excel 并通过菜单打开 CSV 文件时,结果可能会有所不同(至少对于某些旧版本的 Excel 来说这是真实的观察结果)。
关于Python XML 解析器将数字加载为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572576/