python:使用多处理和数据帧进行地理编码

时间:2016-05-04 17:14:54

标签: python pandas

我正在尝试将zipcode作为数据框中的列返回。此代码有效,但不会在dataframe gps中创建新列。

(int)((sizeof(VALUE)*3)/sizeof(char)-1)

我试过了

  1. import geocoder import multiprocessing as mp import pandas as pd google_key = 'key' def reverse_gecode(coordinates): return geocoder.google(coordinates, key = google_key, method = 'reverse').postal if __name__ == '__main__': gps = pd.DataFrame({'lat': [27.950575, 40.6936488], 'lon': [-82.4571776, -89.5889864]}) # dataframe mehtod gps['gps'] = zip(gps.lat, gps.lon) x = list(gps['gps']) # multiprocessings pool = mp.Pool(processes = (mp.cpu_count() - 1)) result_latlong = pool.map(reverse_gecode, x) pool.close() pool.join()
  2. gps['zip_code'] = gps.apply(lambda x: pool.map(reverse_gecode, list(x[2])), axis = 1)
  3. gps['zip_code'] = gps.apply(lambda x: pool.map(reverse_gecode, x[2]), axis = 1)
  4. 但我无法得到任何工作。我一直得到的错误是

      

    ValueError :('未知位置:27.950575',未发生在索引0')

1 个答案:

答案 0 :(得分:1)

尝试是:

  output:
     pdf_document:
         latex_engine: xelatex

PS我已在import geocoder import multiprocessing as mp import pandas as pd def reverse_gecode(coordinates): return geocoder.google(coordinates, method = 'reverse').postal if __name__ == '__main__': gps = pd.DataFrame({'lat': [27.950575, 40.6936488], 'lon': [-82.4571776, -89.5889864]}) # dataframe mehtod coords = gps[['lat','lon']].astype(str).apply(lambda x: (x[0],x[1]), axis=1).tolist() # multiprocessings pool = mp.Pool(processes = (mp.cpu_count() - 1)) gps['zip_code'] = pool.map(reverse_gecode, coords) print(gps) pool.close() pool.join() 电话中删除key=google_key,因为它对我不起作用

输出:

geocoder.google()