使用pandas导出Excel每行到独立JSON文件报错如何解决
问题排查与修复方案
第一次报错(IndexError)原因
- 逻辑错误:
row是遍历到的当前单行数据,本身是长度等于列数的Series,你使用row[rowNumber]会尝试按行号取当前行的第N个元素,当rowNumber增加到超过列数时就会触发越界错误,完全不需要额外定义rowNumber计数,iterrows()返回的index本身就是行号。 - 文件名错误:
str([rowNumber])会把列表转成字符串,生成的文件名会带方括号,不符合要求。
第二次报错(TypeError)原因
- 参数名错误:
pd.read_excel()没有index和columns参数,指定索引列要用index_col,指定读取列要用usecols。 - 方法调用错误:
row.to_string(row)传参错误,且你需要输出JSON格式,应该直接调用Series自带的to_json()方法,不需要手动转字符串。
可直接运行的正确代码
import pandas as pd from pathlib import Path # 配置路径 root_location = Path("/fullpath/") excel_path = root_location / "toexcelfile.xlsx" # 读取Excel,不需要指定特殊索引或者列的话可以删除read_excel的额外参数 df = pd.read_excel(excel_path) # 遍历每一行 for index, row in df.iterrows(): # 文件名按要求为<行号>.json,需要行号从1开始就把index改为index+1 file_path = root_location / f"{index}.json" # 直接将当前行转JSON写入文件 with open(file_path, "w", encoding="utf-8") as f: f.write(row.to_json(force_ascii=False, indent=2))
补充说明
force_ascii=False用于保留中文不转义,indent=2用于格式化JSON方便阅读,不需要可以删掉这两个参数。
内容的提问来源于stack exchange,提问作者Edalgo
相关产品推荐
相关产品推荐

