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

如何通过Reticulate将Python指定前缀的数据框批量迁移到R环境

批量迁移Python环境中以PREFIX开头的数据框到R

背景

使用reticulate调用Python,通过globals()生成了5个以PREFIX开头、后跟单个字母、以suffix结尾的Pandas数据框,变量名已存入df_names列表,但希望优先通过正则表达式筛选并批量迁移到R环境。

解决方案

方案一:Python端先筛选再传递到R

在Python交互环境中,先通过正则筛选出符合条件的数据框,打包为字典后传递给R:

import re
import pandas as pd

# 从全局变量中筛选以PREFIX开头的DataFrame
prefix_dfs = {
    name: var 
    for name, var in globals().items() 
    if re.match(r'^PREFIX', name) and isinstance(var, pd.DataFrame)
}

回到R环境后,遍历字典将每个数据框导入R全局环境:

# 遍历Python端的prefix_dfs字典,批量导入
for (df_name in names(py$prefix_dfs)) {
  assign(df_name, py$prefix_dfs[[df_name]], envir = .GlobalEnv)
}

方案二:直接在R端筛选并导入

利用reticulate的py对象直接访问Python环境变量,结合R的正则筛选完成迁移:

# 获取Python环境中所有变量名
all_py_vars <- names(py)
# 筛选以PREFIX开头的变量名
target_names <- grep("^PREFIX", all_py_vars, value = TRUE)

# 批量导入到R全局环境
for (name in target_names) {
  # 可选:判断是否为DataFrame,避免导入非数据框变量
  if (py_run_string(sprintf("isinstance(%s, pandas.DataFrame)", name))$result) {
    assign(name, py[[name]], envir = .GlobalEnv)
  }
}

验证

导入完成后,可在R中运行以下命令确认:

# 查看所有以PREFIX开头的对象
ls(pattern = "^PREFIX")
# 检查其中一个数据框结构
str(PREFIX_a_suffix)

内容的提问来源于stack exchange,提问作者Mohamed Mostafa El-Sayyad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:57:41