python - 如何将 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 解析到数据框中?
先感谢您
解决方案
您的方法很简单,但您将新行附加到 df 而不是最终数据帧中:
所以这样做:
final = final.append(df).reset_index(drop=True)
而不是这个:
final = df.append(df)