如何将不同文件夹的多份JSON文件转为对应DataFrame并汇总到列表
解决方案
可以用Python的os模块遍历目录,结合pandas处理JSON文件并生成DataFrame,以下是实现代码:
import os import pandas as pd root_path = '/in_my_path' df_list = [] # 遍历根路径下的所有子文件夹 for folder_name in os.listdir(root_path): folder_path = os.path.join(root_path, folder_name) # 仅处理文件夹类型的条目 if not os.path.isdir(folder_path): continue json_dfs = [] # 遍历文件夹内的所有JSON文件 for file_name in os.listdir(folder_path): if file_name.endswith('.json'): file_path = os.path.join(folder_path, file_name) # 根据JSON格式调整参数: # 若文件是每行一个独立JSON对象,添加lines=True;若为单个JSON数组,可省略该参数 single_df = pd.read_json(file_path, lines=True) json_dfs.append(single_df) # 合并当前文件夹下的所有JSON数据为一个DataFrame combined_df = pd.concat(json_dfs, ignore_index=True) # 可选:给DataFrame添加来源文件夹标识列 # combined_df['source_folder'] = folder_name df_list.append(combined_df)
代码说明
os.listdir(root_path):获取根路径下的所有文件/文件夹名称os.path.isdir(folder_path):过滤掉非文件夹的条目,只处理目标子文件夹file_name.endswith('.json'):仅筛选后缀为.json的文件进行处理pd.read_json:读取单个JSON文件,需根据实际JSON结构调整参数适配不同格式pd.concat:将同文件夹下的所有JSON数据合并为一个DataFrame,ignore_index=True用于重置索引避免重复- 最终
df_list即为包含所有对应文件夹DataFrame的列表,顺序与文件夹在根路径下的排列顺序一致
内容的提问来源于stack exchange,提问作者LZL
相关产品推荐
相关产品推荐

