Список петель в питоне - PullRequest
       8

Список петель в питоне

0 голосов
/ 11 декабря 2018

Я новичок в Python, но пытаюсь вызвать Google Distance Matrix API

Так выглядит мой фрейм данных

enter image description here

Загрузка данных во фрейм данных

data = pd.read_csv(input_filename, encoding ='utf8')

Мне просто нужна помощь в зацикливании списка.

Проблема: продолжает печататься весь список

#Column name in your input data
start_latitude_name = "Start Latitude"
start_longitude_name = "Start Longitude"

end_latitude_name = "End Latitude"
end_longitude_name = "End Longitude"

start_latitude_names = data[start_latitude_name].tolist()
end_latitude_names = data[end_latitude_name].tolist()

start_longitude_names = data[start_longitude_name].tolist()
end_longitude_names = data[end_longitude_name].tolist()


for start_latitude_name in start_latitude_names: 
    origins = start_latitude_name, start_longitude_name
    destinations = end_latitude_name, end_longitude_name
    mode = "walking"

    # Set up your distance matrix url
    distancematrix_url = "*Omitted unnecessary parts*origins={0}&destinations={1}&mode={2}&language=en-EN&key={3}".format(origins, destinations, mode, API_KEY)

    print(distancematrix_url)

Токовый выход (из каждой петли)

# Omitted unnecessary info
origins=40.7614645,123.0,-73.9825913,456.0&destinations=40.65815,789.0,-73.98283,0.0

Ожидаемый выход (из каждой петли)

origins=40.7614645,-73.9825913&destinations=40.65815,-73.98283

Я уверен, что я не зацикливаю это правильно, но я попробовал ответы на нескольких постах, и это не сработало для меня.Я открыт для лучших альтернатив зацикливания данных.Не стесняйтесь поправлять меня.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Если я правильно понял, вы можете векторизовать эту операцию и использовать строковые представления ваших координат:

import pandas as pd

# Make pandas print entire strings without truncating them
pd.set_option("display.max_colwidth", -1)

# Create dummy-df from your example
df = pd.DataFrame({"start_latitude": [40.76, 123.00], "start_longitude": [-73.98, 456.00], "end_latitude": [40.65, 789.00], "end_longitude": [-73.98, 0.00]})
print df

# Set globals
mode = "walking"
API_KEY = "my_key"

# Create the url strings for each row
df["distance_matrix_url"] = "origins=" + df["start_latitude"].map(str) + "," + df["start_longitude"].map(str) + "&destinations=" + df["end_latitude"].map(str) + "," + df["end_longitude"].map(str) + "&mode=" + mode + "&languge=en-EN&key=" + API_KEY

# Print results
print df

Вывод:

   end_latitude  end_longitude  start_latitude  start_longitude                                                                   distance_matrix_url
0  40.65        -73.98          40.76          -73.98            origins=40.76,-73.98&destinations=40.65,-73.98&mode=walking&languge=en-EN&key=my_key
1  789.00        0.00           123.00          456.00           origins=123.0,456.0&destinations=789.0,0.0&mode=walking&languge=en-EN&key=my_key

Это то, что вы 'ищете?

0 голосов
/ 11 декабря 2018

Вы можете сделать это с пандами и df.iterrows():

import pandas as pd

data = pd.read_csv(input_filename, encoding ='utf8')

for idx, row in data.iterrows(): 
    origins = row['Start Latitude'], row['Start Longitude']
    destinations = row['End Latitude'], row['End Longitude']
    mode = "walking"

    # Set up your distance matrix url
    distancematrix_url = "*Omitted unnecessary parts*origins={0}&destinations={1}&mode={2}&language=en-EN&key={3}".format(origins, destinations, mode, API_KEY)

    print(distancematrix_url)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...