【发布时间】:2019-06-21 10:23:31
【问题描述】:
我正在查询谷歌分析 API 并使用 for 循环一次从多个视图中获取数据。然后我有一个解析器函数,可以将我的 JSON 结果解析为 pandas 数据帧。如果我打印函数结果,它会在单个数据框中显示每个结果,无论我查询多少视图。但是我无法将结果添加到新数据框或列出每次迭代。
我尝试过使用 while 循环
df_new = []
view_id_list = ['##', '##', '##']
while len(df_new) < len(view_id_list)
df2 = df_new.append(((prase_response_single(response_data)[0]))
此代码是我的示例请求,它贯穿我的 view_id 列表,并分别为我提供每个数据的数据
for i in viewId_listUse:
sample_request = {
'viewId': i,
'dateRanges': {
'startDate': datetime.strftime(datetime.now() - timedelta(days=30), '%Y-%m-%d'),
'endDate': datetime.strftime(datetime.now(), '%Y-%m-%d')
},
'dimensions': [{'name': 'ga:date'}],
'metrics': [{'expression': 'ga:sessions'}]
}
response = api_client.reports().batchGet(
body={
'reportRequests': sample_request
}).execute()
response_data = response.get('reports', [])[0]
print((prase_response_single(response_data)[0]))
此函数将 JSON 数据解析为 pandas 数据帧,但每次调用时都会清除结果列表
def prase_response_single(report):
"""Parses and prints the Analytics Reporting API V4 response"""
result_list = []
data_csv = []
data_csv2 = []
header_row = []
columnHeader = report.get('columnHeader', {})
metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', [])
dimensionHeaders = columnHeader.get('dimensions', [])
for dheader in dimensionHeaders:
header_row.append(dheader)
for mheader in metricHeaders:
header_row.append(mheader['name'])
rows = report.get('data', {}).get('rows', [])
for row in rows:
row_temp = []
dimensions = row.get('dimensions', [])
metrics = row.get('metrics', [])
for d in dimensions:
row_temp.append(d)
for m in metrics[0]['values']:
row_temp.append(m)
data_csv.append(row_temp)
if len(metrics) == 2:
row_temp2 = []
for d in dimensions:
row_temp2.append(d)
for m in metrics[1]['values']:
row_temp2.append(m)
data_csv2.append(row_temp2)
result_df = pandas.DataFrame(data_csv, columns=header_row)
result_list.append(result_df)
if data_csv2 != []:
result_list.append(pandas.DataFrame(data_csv2, columns=header_row))
return result_list
使用打印功能,这是我收到的结果(行更多,但这是一个格式示例)
ga:date ga:sessions
0 20190522 1243
1 20190523 1167
2 20190524 1001
但是我似乎无法将这些单独的数据帧附加在一起,因为该函数每次被 for 循环调用时都会重置其列表。
【问题讨论】:
标签: python for-loop google-analytics-api