我是Python的新手,但试图调用Google Distance Matrix API
这就是我的数据框架的样子
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
我确定我没有正确地循环它,但我已经尝试了几个帖子的答案,它对我来说不起作用。我愿意接受循环数据的更好选择。随意纠正我。
谢谢!
你可以用pandas和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)
如果我理解正确,您可以向量化此操作并使用坐标的字符串表示:
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
这是你在找什么?