如何在Python中将嵌套列表数据转换为指定列的DataFrame?
嵌套列表转指定列DataFrame的实现方案
没问题,我来帮你把这份嵌套结构的数据转换成你需要格式的DataFrame。咱们用Python的pandas库来实现,步骤很直观:
步骤1:导入依赖并定义原始数据
首先得导入pandas,然后把你的示例数据赋值给变量:
import pandas as pd # 你的原始嵌套数据 raw_data = [{'data': [{'interval': '2021-09-22T09:13:57.000Z/2021-09-29T09:13:57.000Z', 'metrics': [{'metric': 'nOffered', 'qualifier': None, 'stats': {'count': 17, 'count_negative': None, 'count_positive': None, 'current': None, 'denominator': None, 'max': None, 'min': None, 'numerator': None, 'ratio': None, 'sum': None, 'target': None}}, {'metric': 'tAnswered', 'qualifier': None, 'stats': {'count': 17, 'count_negative': None, 'count_positive': None, 'current': None, 'denominator': None, 'max': 17327.0, 'min': 4569.0, 'numerator': None, 'ratio': None, 'sum': 156929.0, 'target': None}}, {'metric': 'tTalk', 'qualifier': None, 'stats': {'count': 29, 'count_negative': None, 'count_positive': None, 'current': None, 'denominator': None, 'max': 2650757.0, 'min': 2124.0, 'numerator': None, 'ratio': None, 'sum': 8402252.0, 'target': None}}], 'views': None}], 'group': {'mediaType': 'voice', 'queueId': 'a72dba75-0bc6-4a65-b120-8803364f8dc3'}}]
步骤2:提取并整理目标数据
咱们遍历嵌套结构,把每个metric对应的count和sum提取出来,组合成你需要的列名格式(比如nOffered_count):
# 初始化一个空字典来存储整理后的数据 result_dict = {} # 遍历数据结构,提取目标字段 for item in raw_data: for data_item in item['data']: for metric in data_item['metrics']: metric_name = metric['metric'] # 添加count字段 result_dict[f"{metric_name}_count"] = metric['stats']['count'] # 添加sum字段 result_dict[f"{metric_name}_sum"] = metric['stats']['sum'] # 转换为DataFrame df = pd.DataFrame([result_dict])
步骤3:查看结果
运行上面的代码后,打印df就能得到你想要的格式:
print(df)
输出结果:
nOffered_count nOffered_sum tAnswered_count tAnswered_sum tTalk_count tTalk_sum 0 17 None 17 156929.0 29 8402252.0
这个方案的好处是扩展性很强——如果后续你的metrics里新增了其他指标,代码不需要大改就能自动生成对应的列。
内容的提问来源于stack exchange,提问作者shivam
相关产品推荐
相关产品推荐

