如何将函数计算的经纬度结果保存为新CSV文件?
解决经纬度结果保存到CSV的问题
修改思路
- 让经纬度函数返回实际值(而非仅打印),这样才能收集数据
- 关联存储地址与对应的经纬度数据
- 使用pandas的
to_csv方法将数据保存为新文件
推荐实现代码(简洁的pandas风格)
import requests import urllib.parse import pandas as pd def lat_long(add): url = 'https://nominatim.openstreetmap.org/search/'+urllib.parse.quote(add)+'?format=json' response = requests.get(url).json() # 处理地址无法解析的情况,避免报错 if response: lat = response[0]["lat"] lon = response[0]["lon"] print(lat, lon) return lat, lon return None, None # 读取原始地址CSV df = pd.read_csv('C:\\Users\\Umer Abbas\\Desktop\\lat_long.csv') # 仅处理前5行(和原代码逻辑一致,如需处理全部可删除[:5]) processed_df = df[:5].copy() # 为每行地址生成经纬度列 processed_df[['Latitude', 'Longitude']] = processed_df['Address'].apply(lambda x: pd.Series(lat_long(x))) # 保存结果到新CSV,index=False避免写入索引列 processed_df.to_csv('C:\\Users\\Umer Abbas\\Desktop\\lat_long_result.csv', index=False)
保持原循环逻辑的实现
如果你想保留原代码的手动循环方式,可以用下面的写法:
import requests import urllib.parse import pandas as pd def lat_long(add): url = 'https://nominatim.openstreetmap.org/search/'+urllib.parse.quote(add)+'?format=json' response = requests.get(url).json() if response: return response[0]["lat"], response[0]["lon"] return None, None df = pd.read_csv('C:\\Users\\Umer Abbas\\Desktop\\lat_long.csv') # 初始化列表存储结果 result_list = [] print("Latitude", "Longitude") for i in range(0,5): add = df._get_value(i, 'Address') lat, lon = lat_long(add) print(lat, lon) # 将地址和经纬度存入字典,再添加到列表 result_list.append({'Address': add, 'Latitude': lat, 'Longitude': lon}) # 转换为DataFrame并保存 result_df = pd.DataFrame(result_list) result_df.to_csv('C:\\Users\\Umer Abbas\\Desktop\\lat_long_result.csv', index=False)
关键修改点
- 调整
lat_long函数,新增返回值逻辑,同时增加异常处理避免地址解析失败崩溃 - 新增数据收集逻辑,将地址和经纬度关联存储
- 使用
pd.DataFrame.to_csv()完成文件保存,index=False确保输出CSV无多余索引列
内容的提问来源于stack exchange,提问作者umar abbas
相关产品推荐
相关产品推荐

