【发布时间】:2020-07-13 15:48:13
【问题描述】:
概览
使用pandas.json_normalize,我能够将具有多个嵌套对象的 BigQuery 输出的 JSON 数据规范化到一个数据框中。 csv 表示如下。你会注意到它应该爆发的“设备”之类的东西。在其他情况下,例如该列和event_params 它没有。我到处玩,能够扩展这个对象,但它会引入新的角色,幸运的是,我只需要一个取决于 event_name 值的键/值。对于本例,我想提取 session_user_id 并将其规范化为类似的宽列布局。
CSV 数据
event_date,event_timestamp,event_name,event_params,device.operating_system device.operating_system_version
20200105,69996099900,session_start,[{'key': 'ga_session_number', 'value': {'string_value': None, 'int_value': '3', 'float_value': None, 'double_value': None}}, {'key': 'session_engaged', 'value': {'string_value': None, 'int_value': '1', 'float_value': None, 'double_value': None}}, {'key': 'engaged_session_event', 'value': {'string_value': None, 'int_value': '1', 'float_value': None, 'double_value': None}}, {'key': 'session_id', 'value': {'string_value': None, 'int_value': '123456789', 'float_value': None, 'double_value': None}}, {'key': 'firebase_event_origin', 'value': {'string_value': 'auto', 'int_value': None, 'float_value': None, 'double_value': None}}],IOS,9.3.5
问题
我可能只是不知所措,但是有没有一种简单的方法可以将具有关联值的单个(或更简单的所有键)提取到其他列中?
例如,新列将是:
(老实说,键/值的命名只要是宽 csv 平面文件就不是问题)
event_params.1.key = session_engaged
event_params.1.string_value = None
event_params.1.int_value = 1
[...]
event_params.2.key = session_id
event_params.2.string_value = None
event_params.2.int_value = 123456789
[...]
【问题讨论】:
标签: python pandas dataframe data-structures data-science