ID st_lat st_lng end_lat end_lng
0 4 127.035740 37.493954 127.035740 37.493954
1 4 127.035740 37.493954 127.035740 37.493954
2 5 127.034870 37.485865 127.034318 37.485645
3 5 127.034201 37.485598 127.035064 37.485949
4 5 127.035064 37.485949 127.034618 37.485938
мой фрейм данных выглядит как выше. Я пытаюсь создать новый столбец, применяя функцию haversine, которая требует двух кортежей. например: haversine ((lat, lng), (lat, lng)) возвращает расстояние между двумя точками.
Их типы данных находятся в float. следующий https://www.geeksforgeeks.org/create-a-new-column-in-pandas-dataframe-based-on-the-existing-columns/ Я сделал
df["distance(km)"] = df.apply(lambda row:haversine((row.st_lat, row.st_lng), (row.end_lat, row.end_lng)))
, который возвращает
AttributeError: ("Объект" Series "не имеет атрибута" st_lat "", "произошел в индексе user_id ')
и
df["distance(km)"] = haversine((df.st_lat, df.st_lng), (df.end_lat, df.end_lng))
возвращая TypeError: невозможно преобразовать серию в число с плавающей точкой.
Я знаю, что это потому, что df.st_lat дает серии и не может ввести две серии и создать кортеж.
для каждой пары st_lat, st_lng Я хочу сравнить ее с парой end_lat, end_lng и создать столбец, содержащий расстояния.
Любая помощь? Я смотрел на , как разбить столбец кортежей в пандах? - 1023 *
Разделить столбец, содержащий 2 значения, на разные столбцы в пандах df
что противоположно тому, что я пытаюсь сделать.
РЕДАКТИРОВАТЬ: решается с помощью
def dist(df):
return haversine(df["start"], df["end"])
df["distance(km)"] = df.apply(dist, axis =1)