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

R与Python间数据传递:Arrow Table转Tibble/DataFrame方法

解决R与Python通过Arrow传输数据后转Tibble的报错问题

需求场景

需要完成跨语言数据处理流程:

  • 从R中提取Tidy格式数据,转换为Arrow格式
  • 将Arrow数据传入Python,转换为Pandas DataFrame进行处理
  • 处理完成后将Pandas DataFrame转回Arrow格式
  • 从Python取回Arrow数据,转换回R的Tidy格式数据

遇到的问题

执行最后一步转换时,直接调用tibble()函数会报错,提示传入的对象是Python的pyarrow.lib.Table类型,无法直接转换为Tibble。

解决方案

使用as_tibble()方法可以将pyarrow.lib.Table对象正确转换为Tibble格式。

完整操作代码

R 端代码

# 加载所需包
library(reticulate)
library(tibble)
library(arrow)

# 创建示例Tidy数据
tidy_data <- tibble(
  id = 1:5,
  value = rnorm(5),
  category = c("A", "B", "A", "C", "B")
)

# 转换为Arrow格式并传入Python
arrow_table <- arrow::as_arrow_table(tidy_data)
py$arrow_data <- arrow_table

Python 端代码(通过reticulate调用)

import pyarrow as pa
import pandas as pd

# 接收R传入的Arrow数据并转为Pandas DataFrame
df = pd.DataFrame(py.arrow_data)

# 处理数据示例:新增一列
df['processed_value'] = df['value'] * 2

# 转换回Arrow格式
processed_arrow = pa.Table.from_pandas(df)

# 传回R
py.processed_arrow_data = processed_arrow

R 端完成最终转换

# 取回处理后的Arrow数据
processed_arrow_from_py <- py$processed_arrow_data

# 错误方式:直接用tibble()会报错
# tibble(processed_arrow_from_py)

# 正确方式:使用as_tibble()转换
final_tidy_data <- as_tibble(processed_arrow_from_py)

# 查看结果
print(final_tidy_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:23:24