Pandas применяются к dateframe производит «<значения встроенного метода…»
Я пытаюсь построитьGeoJSON объект, Мой ввод - CSV со столбцом адреса, столбцом lat и столбцом lon. Затем я создал точки Shapely из координат, буферизовал их по заданному радиусу и получил словарь координат с помощью опции отображения - пока что все хорошо. Затем после обращения кэтот вопросЯ написал следующую функцию, чтобы получить серию словарей:
def make_geojson(row): return {'geometry':row['geom'], 'properties':{'address':row['address']}}
и я применил это так:
data['new_output'] = data.apply(make_geojson, axis=1)
Мой получившийся столбец полон этих:<built-in method values of dict object at 0x10...
Самое странное, когда я напрямую вызываю функцию (т.е.make_geojson(data.loc[0])
Я действительно получаю словарь, который я ожидаю. Возможно, еще более странно то, что, когда я вызываю функции, которые я получаю от применения (например,data.output[0]()
, data.loc[0]['output']()
) Я получаю эквивалент следующего списка:[data.loc[0]['geom'], {'address':data.loc[0]['address']}]
то есть значения (но не ключи) словаря, который я пытаюсь получить.
Для тех из вас, кто играет дома, вот игрушечный пример:
from shapely.geometry import Point, mapping
import pandas as pd
def make_geojson(row):
return {'geometry':row['geom'], 'properties':{'address':row['address']}}
data = pd.DataFrame([{'address':'BS', 'lat':34.017, 'lon':-117.959}, {'address':'BS2', 'lat':33.989, 'lon':-118.291}])
data['point'] = map(Point, zip(data['lon'], data['lat']))
data['buffer'] = data['point'].apply(lambda x: x.buffer(.1))
data['geom'] = data.buffer.apply(mapping)
data['output'] = data.apply(make_geojson, axis=1)