python中的循环列表

问题描述 投票:0回答:2

我是Python的新手,但试图调用Google Distance Matrix API

这就是我的数据框架的样子

enter image description here

Loading data into data frame

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

我只需要一些循环列表的帮助。

Issue: It keeps on printing the entire list

#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)

Current Output (From each loop)

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

Expected Output (From each loop)

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

我确定我没有正确地循环它,但我已经尝试了几个帖子的答案,它对我来说不起作用。我愿意接受循环数据的更好选择。随意纠正我。

谢谢!

python pandas for-loop
2个回答
1
投票

你可以用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)

1
投票

如果我理解正确,您可以向量化此操作并使用坐标的字符串表示:

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

这是你在找什么?

© www.soinside.com 2019 - 2024. All rights reserved.