You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将populartimes库返回的JSON数据导出为CSV文件

问题原因分析
  • 执行df = pd.DataFrame(r)报错:返回的r是嵌套结构,包含不等长列表、子字典,直接转换会因为行列长度匹配混乱触发异常
  • 执行data = json.dumps(r); df = pd.DataFrame(data[populartimes])报错:json.dumps()会把Python字典转为字符串类型,字符串只能用整数下标取值,不能用键名索引
  • 执行data = json.loads(r)报错:r本身就是调用接口返回的Python字典对象,不是JSON字符串,无需反序列化操作
实现方案

我们需要先把嵌套结构(列表、子字典)序列化为JSON字符串,保证每个顶层键对应的值都是标量,再转换为DataFrame写入CSV,追加写入时只需控制写入模式和表头开关即可。

完整可运行代码

import populartimes
import pandas as pd
import json
import os

def save_place_to_csv(place_data, csv_path="places_data.csv"):
    # 处理嵌套结构,转成JSON字符串方便存储
    processed_data = {}
    for k, v in place_data.items():
        if isinstance(v, (dict, list)):
            processed_data[k] = json.dumps(v, ensure_ascii=False)
        else:
            processed_data[k] = v
    # 转为单行DataFrame
    df = pd.DataFrame([processed_data])
    # 判断文件是否存在,首次写入加表头,后续追加不加表头
    file_exists = os.path.isfile(csv_path)
    df.to_csv(
        csv_path,
        mode="a",
        index=False,
        header=not file_exists,
        encoding="utf-8-sig"
    )

# 调用示例
if __name__ == "__main__":
    # 第一条数据写入
    r1 = populartimes.get_id("API KEY","ChIJSYuuSx9awokRyrrOFTGg0GY")
    save_place_to_csv(r1)
    # 第二条同类数据追加
    # r2 = populartimes.get_id("API KEY","第二个地点的place_id")
    # save_place_to_csv(r2)

读取CSV还原数据说明

后续需要使用嵌套字段时,只需用json.loads()解析对应列的值即可还原原始结构:

df = pd.read_csv("places_data.csv")
# 还原populartimes字段为原始列表结构
df["populartimes"] = df["populartimes"].apply(json.loads)
# 还原coordinates字段为原始字典结构
df["coordinates"] = df["coordinates"].apply(json.loads)

内容的提问来源于stack exchange,提问作者Khawaja Abdul Ahad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 12:06:03