我有一个.txt数据,其中第6列和第7列是GPS位置,格式如下:
50;18.5701400N,4;07.7693770E
当我通过read_csv读取它时,我试图通过使用转换器将其转换为笛卡尔坐标。我为转换器编写了函数
convertFunc = lambda x : float((x[0:5]+x[6:12]).replace(';','.'))
convert = {6:convertFunc,7:convertFunc}
当我将其用于单值时,它的工作方式是我希望的:
convertFunc(myData.Lat[1])
Out [159]: 55.187110250000003
当我试图在read_csv中使用它时,它不起作用
myData = DataFrame(read_csv('~/data.txt', sep=',' names=['A', 'B', 'C', 'D', 'E', 'Lat', 'Long'],converters=convert))
我有个错误:
...
convertFunc = lambda x : float((x[0:5] + x[6:12]).replace(';', '.'))
ValueError: invalid literal for float(): DGPS ongitu
我不知道哪里做错了,或者我在转换器中误解了什么? 或者也许有人知道使用这种形式的GPS数据的好方法(包)?
(我认为当我想将我的函数应用到列时,lambda
可能有问题,我有一个错误:TypeError: only length-1 arrays can be converted to Python scalars
)
你的转换器不好。
在一个不可靠的转换器之上,我认为您将转换器应用到了错误的列(看看您得到的异常)。
那个转换器有点粗糙;我能推荐一个更健壮的吗?
另外,这个错误表明您正在试图转换显然不是GPS字符串的内容——也许是标题行?
相关问题 更多 >
编程相关推荐