如何用Pandas优化Excel转指定JSON格式并过滤空标签项
优化Excel转JSON代码(移除空Scope条目)
问题分析
原代码硬编码了三组Scope-Tag对,会把空Scope的条目也加入到tags列表中,不符合预期格式。需要动态过滤掉无值的Scope条目,同时简化代码逻辑。
优化后的代码
import pandas as pd import json # 可选,用于输出标准JSON格式 # 读取Excel文件 df = pd.read_excel(r'C:\Users\xcdfr\Desktop\VMtag\vmtag.xlsx', header=1, index_col=None) # 固定外部ID(若需按VM动态取值,可改为row['对应列名']) EXTERNAL_ID = "500cbe10-e7d6-189d-15ae-e60b85326cd3" # 逐行处理生成目标结构 for _, row in df.iterrows(): valid_tags = [] # 遍历所有Scope-Tag组(支持扩展更多组) for idx in range(1, 4): scope_col = f"Scope{idx}" tag_col = f"Tag{idx}" scope_val = row[scope_col] tag_val = row[tag_col] # 过滤空Scope(排除NaN、空字符串) if pd.notna(scope_val) and str(scope_val).strip(): valid_tags.append({"scope": scope_val, "tag": tag_val}) tag_data = {"external_id": EXTERNAL_ID, "tags": valid_tags} # 打印原生字典或标准JSON格式 print(tag_data) # print(json.dumps(tag_data, indent=2)) # 可选,输出格式化的标准JSON
优化说明
- 用
iterrows()遍历行,替代索引遍历,代码更简洁易读 - 循环处理多组Scope-Tag,避免重复代码,后续扩展组只需修改循环范围
- 通过
pd.notna()和字符串过滤,精准移除无值的Scope条目 - 可选使用
json.dumps()输出标准JSON格式(双引号),符合JSON语法规范
内容的提问来源于stack exchange,提问作者Abdul Rasheed
相关产品推荐
相关产品推荐

