我正在尝试将Google Analytics Admin API响应放入Pandas Dataframe ,但在解析结果时遇到了问题。我正在使用admin_v1beta库中的list customDimensions method。我可以看到结果,但我还没有找到如何将它们转换为可在Pandas中使用的格式。
我的职能:
def get_custom_dimensions(property_filter):
client = admin_v1beta.AnalyticsAdminServiceClient()
request = admin_v1beta.ListCustomDimensionsRequest(
parent=property_filter
)
return client.list_custom_dimensions(request=request)
字符串
和输出:
ga4_custom_dimensions = get_custom_dimensions("properties/xxx")
print(type(ga4_custom_dimensions))
<class 'google.analytics.admin_v1beta.services.analytics_admin_service.pagers.ListCustomDimensionsPager'>
print(ga4_custom_dimensions)
ListCustomDimensionsPager<custom_dimensions {
name: "properties/xxx/customDimensions/yy1"
parameter_name: "custom_dimension_zz1"
display_name: "Custom Dimension ZZ1"
description: "The dimension ZZ1 useful for filtering."
scope: EVENT
}
custom_dimensions {
name: "properties/xxx/customDimensions/yy2"
parameter_name: "custom_dim...
型
这个响应有自己的类,所以在我可以对它做任何事情之前,我需要转换它,但我还没有弄清楚如何转换。我的第一个想法是转换为JSON:
custom_dimensions_json_1 = json.dumps(ga4_custom_dimensions.__dict__)
custom_dimensions_json_2 = json.dumps(vars(ga4_custom_dimensions))
型
这两种方法产生相同的误差,TypeError: Object of type _GapicCallable is not JSON serializable
的。
我的下一次尝试是通过Pandas json_normalize
方法:
custom_dimension_df = pd.json_normalize(ga4_custom_dimensions)
型
结果是只有一个索引的 Dataframe 。
最后,我尝试直接解析结果:
temp_df = pd.DataFrame(ga4_custom_dimensions['custom_dimensions'])[['name',
'parameter_name',
'display_name',
'description',
'scope']]
型
这将生成“TypeError:ListCustomDimensionsPager' object is not subscriptable
的值。该值为
有没有人能指导我如何解析Pandas中的API响应?
1条答案
按热度按时间xpcnnkqh1#
我能够解决这个问题并继续前进。我通过一系列
str.replace()
步骤更新了我的函数以使响应有效,然后从那里创建pandas框架。字符串
调用这个函数会产生一个Pandas框架,其中包含可以保存、操作等的响应。
型
我在python中没有太多处理类对象的经验,我的解决方案不是很优雅,但它很有效。