如何使用pandas apply调用Google Places API处理CSV坐标列表
问题排查及修复方案
你代码里的apply调用存在3个明确错误,修复后即可正常运行:
- 参数传递格式错误:你自定义的
givePlaces需要3个独立入参(location, radius, type),但你在lambda中把4个值包裹在同一个元组里,作为第一个参数传入,等于函数只收到1个参数,缺少后两个参数
- 参数传递格式错误:你自定义的
- 列名不匹配:你的CSV表头是
Latitude(纬度)、Longitude(经度)、Radius(检索半径),但代码中调用的列名是Länge、Breite,和实际表头不对应,会触发字段不存在的报错
- 列名不匹配:你的CSV表头是
- 语法错误:lambda表达式的括号未正确闭合,缺少两处右括号
修正后代码
仅需要替换你报错的apply调用段即可:
# 修复后的apply调用,注意参数顺序、列名匹配、括号闭合 df['places'] = df.apply(lambda row: givePlaces( location = (row['Latitude(纬度)'], row['Longitude(经度)']), radius = row['Radius(检索半径)'], type = 'cafe' ), axis=1)
可选优化建议
如果后续调用出现API限额报错,可以在每次调用givePlaces后增加1-2秒的等待时间,避免触发Google接口的频率限制:
def givePlaces(location, radius, type): # 原有代码不变,在函数末尾增加1秒等待 time.sleep(1) print("found " + str(len(places)) + " places") return places
内容的提问来源于stack exchange,提问作者marinade
相关产品推荐
相关产品推荐

