Applying the python-geohash encode function on a dataframe
13,371
You should use the values of x
, not of df
in the apply statement:
df['geohash']=df.apply(lambda x: gh.encode(x.latitude, x.longitude, precision=5), axis=1)
# ^ ^ use x
This yields:
>>> 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
Author by
Admin
Updated on July 03, 2022Comments
-
Admin over 1 year
I am trying to apply the encode function to a dataframe. I keep meeting a ValueError:
>>> 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') >>>
Putting in a single pair of values:
>>> gh.encode(22,36, precision = 5) 'sgct5'
shows that gh.encode is working.
Is there any other way of doing this?