可能這是一個簡單的問題,但我在 for 回圈中的經驗非常有限。
我試圖通過我擁有的一些簡單示例來調整此頁面https://www.mediawiki.org/wiki/API:Geosearch 中的解決方案,但結果不是我所期望的。
例如:
我有這個簡單的資料框:
df= pd.DataFrame({'City':['Sesimbra','Ciudad Ju??rez','31100 Treviso','Ramada Portugal','Olh?o'],
'Country':['Portugal','México','Itália','Portugal','Portugal']})
我創建了一個基于城市的串列:
lista_cidades = list(df['City'])
我想遍歷這個串列以獲得坐標(十進制,最好)
到目前為止,我嘗試了這種方法:
import requests
lng_dict = {}
lat_dict = {}
S = requests.Session()
URL = "https://en.wikipedia.org/w/api.php"
PARAMS = {
"action": "query",
"format": "json",
"titles": [lista_cidades],
"prop": "coordinates"
}
R = S.get(url=URL, params=PARAMS)
DATA = R.json()
PAGES = DATA['query']['pages']
for i in range(len(lista_cidades)):
for k, v in PAGES.items():
try:
lat_dict[lista_cidades[i]] = str(v['coordinates'][0]['lat'])
lng_dict[lista_cidades[i]] = str(v['coordinates'][0]['lon'])
except:
pass
但看起來代碼不會遍歷串列并且總是回傳相同的坐標
例如,當我用緯度坐標呼叫字典時,這就是我得到的
lng_dict
{'Sesimbra': '-7.84166667',
'Ciudad Ju??rez': '-7.84166667',
'31100 Treviso': '-7.84166667',
'Ramada Portugal': '-7.84166667',
'Olh?o': '-7.84166667'}
我應該怎么做才能解決這個問題?
提前致謝
uj5u.com熱心網友回復:
我認為查詢只回傳一個結果,它將只取您串列中的最后一個城市(在您的 CAS 中為“Olh?o”坐標)。
您可以通過記錄DATA內容來檢查它。
我不了解 wikipedia API,但是您的呼叫缺少引數(檔案應該為您提供資訊),或者您必須為每個城市呼叫 API,例如:
import pandas as pd
import requests
df = pd.DataFrame({'City': ['Sesimbra', 'Ciudad Ju??rez', '31100 Treviso', 'Ramada Portugal', 'Olh?o'],
'Country': ['Portugal', 'México', 'Itália', 'Portugal', 'Portugal']})
lista_cidades = list(df['City'])
lng_dict = {}
lat_dict = {}
S = requests.Session()
URL = "https://en.wikipedia.org/w/api.php"
for city in lista_cidades:
PARAMS = {
"action": "query",
"format": "json",
"titles": city,
"prop": "coordinates"
}
R = S.get(url=URL, params=PARAMS)
DATA = R.json()
PAGES = DATA['query']['pages']
for k, v in PAGES.items():
try:
lat_dict[city] = str(v['coordinates'][0]['lat'])
lng_dict[city] = str(v['coordinates'][0]['lon'])
except:
pass
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/404990.html
標籤:
