如何用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
相关产品推荐
相关产品推荐

