У меня есть кадр данных pandas my_df
со следующими столбцами:
id lat1 lon1 lat2 lon2
1 45 0 41 3
2 40 1 42 4
3 42 2 37 1
В принципе, я хотел бы сделать следующее:
import haversine
haversine.haversine((45, 0), (41, 3)) # just to show syntax of haversine()
> 507.20410687342115
# what I'd like to do
my_df["dist"] = haversine.haversine((my_df["lat1"], my_df["lon1"]),(my_df["lat2"], my_df["lon2"]))
TypeError: невозможно преобразовать серию в ‹ class 'float' >
Используя это, я попробовал следующее:
my_df['dist'] = haversine.haversine(
list(zip(*[my_df[['lat1','lon1']][c].values.tolist() for c in my_df[['lat1','lon1']]]))
,
list(zip(*[my_df[['lat2','lon2']][c].values.tolist() for c in my_df[['lat2','lon2']]]))
)
Файл "blabla\lib\site-packages\haversine__init__.py", строка 20, в haversine lat1, lng1 = point1
ValueError: слишком много значений для распаковки (ожидается 2)
Любая идея о том, что я делаю неправильно / как я могу добиться того, чего хочу?