在Dataframe中的两列上应用lambda函数以获取Geolocation

时间:2017-04-15 17:58:41

标签: python-3.x pandas numpy dataframe lambda

数据集:

enter image description here

我正在尝试使用坐标Pickup_longitude和Pickup and latitude获取拾取位置。如果我单独调用该函数它可以工作。如果我和lambda一起打电话给pandas就行不通。

import requests
def fxy(x, y):
    url="http://maps.googleapis.com/maps/api/geocode/json?latlng="+x+","+y+"&sensor=true"
    print(url)
    result=requests.get(url).json()
    str=result['results'][0]['address_components'][3]['long_name']
    print(str)
    return str

#str1=fxy('40.69238281','-73.94309998')
#str1

locations=pd.read_csv("Data/locations.csv",sep=",")
locations['pickup_location'] = locations.apply(lambda x: fxy(str(x['Pickup_longitude']), str(x['Pickup_latitude'])))

错误:

  

---> 5 url =“http://maps.googleapis.com/maps/api/geocode/json?latlng=”+ x,y +“& sensor = true”         6打印(网址)         7 result = requests.get(“http://maps.googleapis.com/maps/api/geocode/json?latlng=”+ x +“,”+ y +“& sensor = true”)。json()

     

TypeError :(“ufunc'add'不包含带签名的循环   匹配类型dtype('

1 个答案:

答案 0 :(得分:0)

将数据框列转换为String并且它可以工作。

locations ['pickup_location'] = locations.apply(lambda x:fxy(str(x ['Pickup_latitude']),str(x ['Pickup_longitude'])),axis = 1)