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

将多JSON文件含对应文件名导入DataFrame时文件名重复问题排查

问题分析与修正

错误原因

  • 循环中执行df['filename'] = os.path.basename(ele).strip(".json")时,会把整个DataFrame的所有行的filename字段替换成当前遍历到的文件名。循环结束后,所有行自然都会显示最后一个文件的名称。
  • enumerate(json_files, len(json_files))属于误用,enumerate的第二个参数是起始索引值,这里你不需要用到索引,直接遍历文件路径列表即可。

修正后的代码

import glob
import os
import pandas as pd

json_files = glob.glob(r"json_files\*.json")
df = pd.DataFrame()

for ele in json_files:
    # 读取单个JSON文件为子DataFrame
    sub_df = pd.read_json(ele)
    # 仅给当前文件对应的子DataFrame添加文件名
    sub_df['filename'] = os.path.basename(ele).strip(".json")
    # 删除不需要的列
    sub_df = sub_df.drop(['pages'], axis=1)
    # 合并子DataFrame到主DataFrame,重置索引避免重复
    df = pd.concat([df, sub_df], ignore_index=True)

关键改进点

  • 先给单个文件对应的子DataFrame添加filename字段,再合并到主DataFrame,避免覆盖已有数据的filename值
  • 添加ignore_index=True重置索引,避免合并后出现重复索引问题
  • 移除了无用的enumerate遍历方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:55:31