Python实现:将含嵌套JSON的列表中'data'字段转为DataFrame
提取嵌套列表中'data'字段并转换为DataFrame
直接通过列表推导式提取每个元素的data字段,再传入Pandas的DataFrame构造函数即可完成转换,完整代码如下:
import pandas as pd # 原始嵌套列表数据 emptylist = [{'data': {'id': 7478290440, 'version': 0, 'bonus_opening_balance': 7.4, 'cash_opening_balance': 30.83, 'external_round_id': '8997958938', 'game_id': 29788, 'game_session_id': 144418070, 'last_updated_at': '2023-06-29T14:03:03Z', 'started_at': '2023-06-29T14:03:03Z', 'status': 0, 'cash_stake': 0, 'cash_win': 0, 'bonus_stake': 0, 'bonus_win': 0}, 'metadata': {'timestamp': '2023-06-29T12:03:07.699650Z', 'record-type': 'data', 'operation': 'insert', 'partition-key-type': 'schema-table', 'schema-name': 'revolve', 'table-name': 'game_round', 'transaction-id': 103414267563647}}, {'data': {'id': 7478290359, 'version': 2, 'bonus_opening_balance': 0, 'cash_opening_balance': 11.13, 'ended_at': '2023-06-29T14:03:03Z', 'external_round_id': '8997958480', 'game_id': 16210, 'game_session_id': 144418025, 'last_updated_at': '2023-06-29T14:03:03Z', 'started_at': '2023-06-29T14:02:58Z', 'status': 1, 'cash_stake': 0.2, 'cash_win': 0.03, 'bonus_stake': 0, 'bonus_win': 0}, 'metadata': {'timestamp': '2023-06-29T12:03:07.708711Z', 'record-type': 'data', 'operation': 'update', 'partition-key-type': 'schema-table', 'schema-name': 'revolve', 'table-name': 'game_round', 'transaction-id': 103414267564722}}, {'data': {'id': 7478290440, 'version': 1, 'bonus_opening_balance': 7.4, 'cash_opening_balance': 30.83, 'external_round_id': '8997958938', 'game_id': 29788, 'game_session_id': 144418070, 'last_updated_at': '2023-06-29T14:03:03Z', 'started_at': '2023-06-29T14:03:03Z', 'status': 0, 'cash_stake': 0.2, 'cash_win': 0, 'bonus_stake': 0, 'bonus_win': 0}, 'metadata': {'timestamp': '2023-06-29T12:03:07.717096Z', 'record-type': 'data', 'operation': 'update', 'partition-key-type': 'schema-table', 'schema-name': 'revolve', 'table-name': 'game_round', 'transaction-id': 103414267565254}}] # 提取所有元素的'data'字段 data_records = [item['data'] for item in emptylist] # 转换为DataFrame df = pd.DataFrame(data_records) # 查看结果 print(df)
输出结果示例
id version bonus_opening_balance cash_opening_balance external_round_id game_id game_session_id last_updated_at started_at status cash_stake cash_win bonus_stake bonus_win ended_at 0 7478290440 0 7.4 30.83 8997958938 29788 144418070 2023-06-29T14:03:03Z 2023-06-29T14:03:03Z 0 0.0 0.00 0 0 NaN 1 7478290359 2 0.0 11.13 8997958480 16210 144418025 2023-06-29T14:03:03Z 2023-06-29T14:02:58Z 1 0.2 0.03 0 0 2023-06-29T14:03:03Z 2 7478290440 1 7.4 30.83 8997958938 29788 144418070 2023-06-29T14:03:03Z 2023-06-29T14:03:03Z 0 0.2 0.00 0 0 NaN
内容的提问来源于stack exchange,提问作者Pregz
相关产品推荐
相关产品推荐

