【发布时间】:2012-09-13 10:18:39
【问题描述】:
我有一个 .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)
【问题讨论】:
-
您似乎正在尝试转换标题行...尝试离开
names=,以便read_csv从标题行获取列名。 -
感谢您的回复。我删除了
names=但它没有改变,有同样的错误。 -
嗯,试试
skiprows=1?也许发布您的data.txt的样本,以便清楚问题所在。