我有一个xml文件,其中包含大约15000个值。我用
读了它 import xml.etree.ElementTree as ET
我如何提取值的一个例子是
def get_year1_quantity(element):
return element[5][0].text
我获取了所有数据并将不同的值放入列表中,然后将它们放入pandas数据帧中。
我试图通过以下方式过滤数据:
filtered=this[this.Year1_Q > this.Year2_Q]
一切顺利,直到我查看csv文件中的数据。只有少数值作为字符串加载。根据值,它们作为浮点数或int进入excel。我试过了
Year1_Q=[map(int, x) for x in Year1_Q]
Year1_P=[map(float, x) for x in Year1_P]
Year2_Q=[map(int, x) for x in Year2_Q]
Year2_P=[map(float, x) for x in Year2_P]
但它给了我一个错误,Year1_Q = [map(int,x)for Year1_Q中的x]
ValueError:无法将字符串转换为int:
对我来说,有些数字是作为数字加载的,而其他数字是作为字符串加载的。它们在xml文件中是相同的。
以前有没有人遇到这个问题?
我尝试了this[columns]=this[columns].astype(float)
并为float()获得了无效的文字:6,625.00
答案 0 :(得分:1)
XML是一个文本文件,只有您知道它是应该被解释为字符串还是数字。当你需要它作为Python中的数字时,你必须显式转换它(就像你使用map一样)。 CSV也是一种文本格式。
您可以使用
try:
Year1_Q=[map(int, x) for x in Year1_Q]
except ValueError:
print(repr(Year1_Q))
使问题值可见。
CSV不是原生Excel格式。 Excel可能是值得责备的工具。当您双击CSV文件或启动Excel并通过菜单打开CSV文件时,结果可能会有所不同(至少对于某些旧版本的Excel,这是真实的观察)。