首页 > 解决方案 > 如何将 Google Ads 批处理流解析为 pandas 数据框?

问题描述

我在解析来自我的 Google Ads 请求的批处理响应时遇到问题。我能够得到如下所示的 json 响应:

    results {
  metrics {
    clicks: 200
    conversions_value: 5
    conversions: 40
    cost_micros: 4546564
    impressions: 1235
  }
  segments {
    date: "2021-08-03"
  }
  landing_page_view {
    resource_name: "first"
    unexpanded_final_url: "https://www.soomething.com/find"
  }
}
results {
  metrics {
    clicks: 1000
    conversions_value: 10
    conversions: 65
    cost_micros: 654654
    impressions: 8154
  }
  segments {
    date: "2021-08-02"
  }
  landing_page_view {
    resource_name: "customer"
    unexpanded_final_url: "https://www.soomething.com/find"
  }
}

这是我到目前为止所尝试的:

response = ga_service.search_stream(customer_id=customer_id, query=query)
df = pd.DataFrame()
for batch in response:
    for row in batch.results:
        df= pd.DataFrame({"Date": row.segments.date,
                          "Landing page": row.landing_page_view.unexpanded_final_url,
                          "clicks": row.metrics.clicks,
                          "conversions": row.metrics.conversions,
                          "conversion value": row.metrics.conversions_value,
                          "costs": row.metrics.cost_micros ,
                          "impressions": row.metrics.impressions},index=[0])
        final = df.append(df)

final

但结果看起来只是数据框中的一行数据,而不是 7 天的数据。

但是,如果我执行 print(batch),我会得到上面提到的 json 的响应。

我如何将所有数据从 json 解析到数据框中?

先感谢您

标签: pythonpython-3.xpandas

解决方案


您的方法很简单,但您将新行附加到 df 而不是最终数据帧中:

所以这样做:

final = final.append(df).reset_index(drop=True)

而不是这个:

final = df.append(df)

推荐阅读