You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python仅遍历Excel目标列非空行生成XML?

解决方法:过滤空行后生成目标XML

问题根源

pandas读取Excel时,会以工作表中最后一行存在数据的行作为数据边界,哪怕目标列(如name)已经是空值,这就导致循环时会处理到无有效数据的行,生成含nan的XML节点。

修改后的代码

import pandas as pd
from lxml import etree as et

# 读取Excel工作表
raw_data = pd.read_excel('myfile.xls', sheet_name='name')

# 过滤掉name列为空的行(若需同时校验id列,可将subset改为['name', 'id'])
filtered_data = raw_data.dropna(subset=['name'], how='any')

# 初始化XML根节点(对应nametable表格)
root = et.Element('nametable')

# 遍历过滤后的有效行生成XML
for _, row in filtered_data.iterrows():
    # 创建带id属性的value节点
    value_elem = et.SubElement(root, 'value', id=str(row['id']))
    # 创建嵌套的name节点并赋值
    name_elem = et.SubElement(value_elem, 'name')
    name_elem.text = row['name']

# 可选:将XML写入文件
tree = et.ElementTree(root)
tree.write('output.xml', encoding='utf-8', pretty_print=True)

关键说明

  • dropna(subset=['name'], how='any'):精准过滤掉name列无有效值的行,确保后续只处理包含有效名称的行。
  • 调整了XML节点生成逻辑,完全匹配你需要的输出结构:给<value>节点添加id属性,内部嵌套<name>子节点。
  • 若需要同时确保id列也不为空,只需将subset参数改为['name', 'id'],即可过滤掉任意一列为空的行。

内容的提问来源于stack exchange,提问作者clemdcz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:55:20