2017-08-03 1 views
1

J'essaie d'appliquer la fonction de codage à une trame de données. Je continue à rencontrer un ValueError:Application de la fonction de codage python-geohash sur une trame

>>> 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') 
>>> 

Mise en une seule paire de valeurs:

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

montre que gh.encode travaille.

Existe-t-il un autre moyen de le faire?

Répondre

0

Vous devez utiliser les valeurs de x, et non de df dans la déclaration applicable:

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

Cela donne:

>>> 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