如何用Python从Excel列的嵌套字典数组中提取指定字段?
提取嵌套字典数组中的指定字段并拆分表格
针对你的需求,我们需要处理Excel中嵌套结构的字典数组,将每个条目对应的category、classification和Count字段提取出来,并与原SID关联展开成多行表格。以下是完整的解决方案:
解决方案代码
import pandas as pd import ast # 读取目标Excel文件 df = pd.read_excel("your_input_file.xlsx") # 定义字段提取函数 def parse_summary(summary_str): # 将字符串形式的数组转换为Python列表对象 summary_data = ast.literal_eval(summary_str) # 遍历每个字典,提取嵌套字段 result = [] for entry in summary_data: # 从嵌套的tid字典中提取字段,用get避免KeyError result.append({ "category": entry.get("tid", {}).get("category"), "classification": entry.get("tid", {}).get("classification"), "Count": entry.get("Count") }) return result # 对Summary列应用提取函数 df["extracted_data"] = df["Summary"].apply(parse_summary) # 将每个列表条目拆分为单独行,保留对应SID expanded_df = df.explode("extracted_data", ignore_index=True) # 把字典列展开为独立的表格列 final_df = pd.concat([ expanded_df[["SID"]], expanded_df["extracted_data"].apply(pd.Series) ], axis=1) # 保存结果到新Excel文件 final_df.to_excel("extracted_output.xlsx", index=False)
关键步骤说明
- 字符串转Python对象:使用
ast.literal_eval()将Summary列中存储的字符串形式数组转换为可操作的Python列表/字典,这是处理这类伪JSON数据的常用方法。 - 嵌套字段提取:遍历每个数组元素,从
tid子字典中提取category和classification,同时提取顶层的Count字段,用get()方法可以避免因字段缺失导致的报错。 - 行拆分:使用
explode()方法将每个单元格中的列表拆分为多行,确保每个提取的条目都与原SID一一对应。 - 字典列展开:通过
pd.Series将字典格式的列展开为独立的表格列,得到最终的结构化输出。
异常处理优化
如果你的数据中存在格式不规范或字段缺失的情况,可以在parse_summary函数中添加异常捕获,避免程序中断:
def parse_summary(summary_str): try: summary_data = ast.literal_eval(summary_str) result = [] for entry in summary_data: result.append({ "category": entry.get("tid", {}).get("category"), "classification": entry.get("tid", {}).get("classification"), "Count": entry.get("Count") }) return result except (SyntaxError, ValueError): # 处理格式错误的情况,返回空列表或占位值 return []
内容的提问来源于stack exchange,提问作者shubhrika tyagi
相关产品推荐
相关产品推荐

