【发布时间】:2022-01-06 07:26:30
【问题描述】:
我有这个数据集
obras = pd.DataFrame(
[['1','Entre Ríos'],['2', 'Entre Rios'],['3','entre Ríos'], ['4','Entre ríos']],
columns = ['id', 'prov']
)
为了规范“Prov”的名称,我调用了一个 API
API_BASE_URL = "https://apis.datos.gob.ar/georef/api/"
def get_similar_bulk(endpoint, nombres):
# realiza consulta a la API
data = {
endpoint: [
{"nombre": nombre, "max": 1} for nombre in nombres
]}
url = API_BASE_URL + endpoint
results = requests.post(
url, json=data, headers={"Content-Type": "application/json"}
).json()
# convierte a una lista de "resultado más probable" o "vacío" cuando no hay
parsed_results = [
single_result[endpoint][0] if single_result[endpoint] else {}
for single_result in results["resultados"]
]
return parsed_results
obras['prov_norm'] = get_similar_bulk("provincias", obras['prov'])
结果我得到了
| id | prov | prov_norm |
|---|---|---|
| 1 | Entre Ríos | {'centroide': {'lat': -32.0588735436448, 'lon': -59.2014475514635}, 'id': '30', 'nombre': 'Entre Ríos'} |
| 2 | Entre Rios | {'centroide': {'lat': -32.0588735436448, 'lon': -59.2014475514635}, 'id': '30', 'nombre': 'Entre Ríos'} |
| 3 | entre Ríos | {'centroide': {'lat': -32.0588735436448, 'lon': -59.2014475514635}, 'id': '30', 'nombre': 'Entre Ríos'} |
| 4 | Entre ríos | {'centroide': {'lat': -32.0588735436448, 'lon': -59.2014475514635}, 'id': '30', 'nombre': 'Entre Ríos'} |
预期的结果是:
| id | prov | lat | lon | id | nombre |
|---|---|---|---|---|---|
| 1 | Entre Ríos | -32.0588735436448 | -59.2014475514635 | 30 | Entre Ríos |
| 2 | Entre Rios | -32.0588735436448 | -59.2014475514635 | 30 | Entre Ríos |
| 3 | entre Ríos | -32.0588735436448 | -59.2014475514635 | 30 | Entre Ríos |
| 4 | Entre ríos | -32.0588735436448 | -59.2014475514635 | 30 | Entre Ríos |
我该如何解决这个问题?
谢谢!!!
【问题讨论】: