将函数应用于pandas数据帧

时间:2018-06-04 14:28:32

标签: python-3.x pandas geocoding

我有一个名为'tourdata'的pandas数据帧,由676k行数据组成。其中两列是纬度和经度。

使用reverse_geocode包我想将这些坐标转换为国家数据。

我打电话的时候:

import reverse_geocode as rg

tourdata['Country'] = rg.search((row[tourdata['latitude']],row[tourdata['longitude']]))

我收到错误:

  

ValueErrorTraceback(最近一次调用最后一次)    in()         1 coordinates =(tourdata ['latitude'],tourdata ['经度']),   ----> 2 tourdata ['Country'] = rg.search((row [tourdata ['latitude']],row [tourdata ['longitude']]))

     

〜/安纳康达/ ENVS / PY3 / LIB / python3.6 /站点包/ reverse_geocode /的初始化的.py   在搜索(坐标)       114“”“       115 gd = GeocodeData()    - > 116返回gd.query(坐标)       117       118

     

〜/安纳康达/ ENVS / PY3 / LIB / python3.6 /站点包/ reverse_geocode /的初始化的.py   在查询中(自我,坐标)        46除了ValueError为e:        47 logging.info('无法解析坐标:{}'。format(coordinates))   ---> 48提高e        49其他:        50个结果= [索引中索引的[self.locations [index]]

     

〜/安纳康达/ ENVS / PY3 / LIB / python3.6 /站点包/ reverse_geocode /的初始化的.py   在查询中(自我,坐标)        43“”“        44尝试:   ---> 45个距离,indices = self.tree.query(坐标,k = 1)        46除了ValueError为e:        47 logging.info('无法解析坐标:{}'。format(coordinates))

     scipy.spatial.ckdtree.cKDTree.query()中的

ckdtree.pyx

     

ValueError:x必须由长度为2但具有形状的向量组成(2,   676701)

测试包是否正常工作:

coordinates = (tourdata['latitude'][0],tourdata['longitude'][0]),
results = (rg.search(coordinates))
print(results)

输出:

[{'country_code': 'AT', 'city': 'Wartmannstetten', 'country': 'Austria'}]

对此的任何帮助表示赞赏。理想情况下,我想访问生成的字典,并仅将国家/地区代码应用于Country列。

1 个答案:

答案 0 :(得分:1)

搜索方法需要一个坐标列表。要获得单个数据点,您可以使用“get”方法。

尝试:

tourdata['country'] = tourdata.apply(lambda x: rg.get((x['latitude'], x['longitude'])), axis=1)

它适用于我:

import pandas as pd
tourdata = pd.DataFrame({'latitude':[0.3, 2, 0.6], 'longitude':[12, 5, 0.8]})
tourdata['country'] = tourdata.apply(lambda x: rg.get((x['latitude'], x['longitude'])), axis=1)
tourdata['country']

输出:

0    {'country': 'Gabon', 'city': 'Booué', 'country...
1    {'country': 'Sao Tome and Principe', 'city': '...
2    {'country': 'Ghana', 'city': 'Mumford', 'count...
Name: country, dtype: object