Вы ссылаетесь на Серии 'неправильно: должно быть - Cartesian_coordinates(df['lat'], df['long'])
.
Возможно, вы захотите переработать свою функцию для работы на полной серии:
import numpy as np
import pandas as pd
d = {'unimportant': {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'},
'lat': {0: 0.97512299999999996, 1: 0.95938500000000004, 2: 0.62332299999999996, 3: 0.89957600000000004, 4: 0.70535500000000007},
'latitude': {0: 52.927700000000002, 1: 54.396836999999998, 2: 52.902609999999996, 3: 51.541823999999998, 4: 51.073046999999995},
'long': {0: -0.054621000000000003, 1: -0.029332999999999998, 2: -0.029691000000000002, 3: 0.000417, 4: -0.0093819999999999997},
'longitude': {0: -3.24315, 1: -1.6806450000000002, 2: -1.4730000000000001, 3: 0.081159999999999996, 4: -0.42397399999999996} }
df = pd.DataFrame(d, columns=['unimportant','latitude','longitude','lat','long'])
def Cartesian_coordinates(lat, long):
R = 6371
x = R * np.cos(lat.values) * np.cos(long.values)
y = R * np.cos(lat.values) * np.sin(long.values)
z = R * np.sin(lat.values)
return x,y,z
x,y,z = Cartesian_coordinates(df['lat'], df['long'])
df['x'],df['y'],df['z'] = x,y,z
In [38]: print(df[['x','y','z']])
x y z
0 3569.222097 -195.148591 5273.728439
1 3655.531649 -107.258474 5216.821349
2 5170.610116 -153.565713 3718.985023
3 3962.392411 1.652318 4988.896135
4 4850.547744 -45.509174 4130.345808
In [39]:
Индексирование и выбор данных