You need to enable JavaScript to run this app. Python合并同目录多JSON文件为空及读取RDS文件报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Python合并同目录多JSON文件为空及读取RDS文件报错如何解决

问题1:JSON文件合并为空/解析报错

原代码的核心问题是没有拼接完整文件路径,os.walk遍历到子目录时直接传入文件名会找不到文件,另外R导出的JSON格式可能和pandas默认读取规则不匹配,同时循环concat性能极低。修正方案如下:

import pandas as pd
import os
from tqdm import tqdm
import json

df_list = []
error_files = []
for subdir, dirs, files in os.walk('.'):
    for file in tqdm(files):
        if file.endswith(".json"):
            full_path = os.path.join(subdir, file)
            try:
                # 先尝试默认读取
                try:
                    temp_df = pd.read_json(full_path)
                except ValueError:
                    # 适配R导出的常见JSON结构
                    with open(full_path, 'r', encoding='utf-8') as f:
                        json_data = json.load(f)
                    temp_df = pd.DataFrame(json_data)
                df_list.append(temp_df)
            except Exception as e:
                error_files.append((file, str(e)))
                continue 

# 一次性合并所有数据
df = pd.concat(df_list, axis=0, ignore_index=True)
print(f"合并完成,共{len(df)}行数据")
if error_files:
    print(f"解析失败文件共{len(error_files)}个:")
    for f, err in error_files[:10]:
        print(f"{f}: {err}")

如果仍有解析失败的文件,取单个报错文件直接打印json_data的结构,对应调整转DataFrame的逻辑即可。

问题2:读取RDS文件报错

原代码的问题有两个:一是R的readRDS函数没有编码参数,额外传入的"utf-8"属于无效参数;二是旧版pandas2ri的转换逻辑兼容性差,行名为空时会触发NULLType报错。

优先推荐方案(无需rpy2)

用pyreadr库直接读取RDS,兼容性更高:

  1. 安装依赖:
pip install pyreadr
  1. 读取代码:
import pyreadr

rds_data = pyreadr.read_r('users.rds')
df = rds_data[None]

rpy2兼容方案

如果必须用rpy2,使用新版转换逻辑规避错误:

import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
from rpy2.robjects.conversion import localconverter

readRDS = robjects.r['readRDS']
# 不要传多余的编码参数
r_df = readRDS('users.rds')
# 手动设置行名避免空值报错
r_df.rownames = robjects.IntVector(range(1, robjects.r['nrow'](r_df)[0]+1))

with localconverter(robjects.default_converter + pandas2ri.converter):
    df = robjects.conversion.rpy2py(r_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 22:45:10