pandas无法将坐标识别为数字

时间:2017-05-20 13:50:11

标签: python csv pandas coordinates

enter image description here

我有一个坐标数据作为csv文件,我想用matplotlib绘制它。

我尝试使用的代码是,

import numpy as np
import pandas as pd

data_filename='coordinate_car.csv'

data = pd.read_csv(data_filename, parse_dates=['lati', 'long'],     
encoding='cp1252')
data.columns

p_lng=data.long
p_lat=data.lati

def lat_lng_to_pixels(lat,lng):
    lat_rad=lat*np.pi/180.0
    lat_rad=np.log(np.tan((lat_rad+np.pi/2.0)/2.0))
    x=100*(lng+180.0)/360.0
    y=100*(lat_rad-np.pi)/(2.0*np.pi)
    return(x,y)

px, py=lat_lng_to_pixels(p_lat,p_lng)

当我运行此代码时,我收到消息为

TypeError: can't multiply sequence by non-int of type 'float'

有人可以帮助我或让我知道如何处理这个问题吗?

谢谢!

我将整个错误代码添加为图片(两张图片)!

enter image description here

enter image description here

这是我想要使用的数据。

1 个答案:

答案 0 :(得分:0)

您的['lati', 'long']列似乎有object dtype。

以下是重现此内容的代码:

In [23]: pd.Series(['11.1111','22.222']) * np.pi
...
skipped
...
TypeError: can't multiply sequence by non-int of type 'float'

解决方法:

In [28]: pd.to_numeric(pd.Series(['11.1111','22.222', 'a string']), errors='coerce') * np.pi
Out[28]:
0    34.906550
1    69.812472
2          NaN
dtype: float64