2017-08-03 14 views
1

我正在尝试将编码函数应用于数据框。我不断满足一个ValueError:在数据框上应用python-geohash编码函数

>>> import pandas as pd 
>>> import pygeohash as gh 
>>> data = { 'latitude': [4.123, 24.345, 31.654], 'longitude': [25.432, 4.234, 57.098]} 
>>> df = pd.DataFrame(data) 
>>> df 
    latitude longitude 
0  4.123  25.432 
1 24.345  4.234 
2 31.654  57.098 
>>> df['geohash']=df.apply(lambda x: gh.encode(df.latitude, df.longitude, precision=5), axis=1) 

Traceback (most recent call last): 
    ......... 
ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index 0') 
>>> 

在一对价值的推杆:

>>> gh.encode(22,36, precision = 5) 
'sgct5' 

显示gh.encode工作。

有没有其他方式做到这一点?

回答

0

你应该在应用语句中使用的值的x,不是df

df['geohash']=df.apply(lambda x: gh.encode(x.latitude, x.longitude, precision=5), axis=1) 
#          ^  ^use x

这产生了:

>>> df['geohash']=df.apply(lambda x: gh.encode(x.latitude, x.longitude, precision=5), axis=1) 
>>> df 
    latitude longitude geohash 
0  4.123  25.432 s8dp6 
1 24.345  4.234 sh742 
2 31.654  57.098 tm8s5