有没有一种简单的方法可以将 Pandas Dataframe 中的 pickle 文件 (.pkl) 读取到 R 中?
一种可能性是导出为 CSV 并让 R 读取 CSV,但这对我来说似乎真的很麻烦,因为我的数据帧相当大。有更简单的方法吗?
谢谢!
原文由 Vincent 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如 russellpierce 在评论中所建议的那样, Reticulate 非常简单且超级流畅。
install.packages('reticulate')
之后,我根据文档中给出的示例创建了一个这样的 Python 脚本。
蟒蛇文件:
import pandas as pd
def read_pickle_file(file):
pickle_data = pd.read_pickle(file)
return pickle_data
然后我的 R 文件看起来像:
require("reticulate")
source_python("pickle_reader.py")
pickle_data <- read_pickle_file("C:/tsa/dataset.pickle")
这给了我之前以 pickle 格式存储在 R 中的所有数据。
您也可以在不离开 R 编辑器的情况下在 R 中在线执行所有这些操作(前提是您的系统 python 可以访问 pandas)…例如
library(reticulate)
pd <- import("pandas")
pickle_data <- pd$read_pickle("dataset.pickle")
原文由 Ankur Sinha 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答893 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
编辑:如果您可以安装和使用 {reticulate} 包,那么这个答案可能已经过时了。请参阅下面的其他答案以获得更简单的路径。
您可以在 python 中加载泡菜,然后通过 python 包
rpy2
(或类似的)将其导出到 R。完成后,您的数据将存在于链接到 python 的 R 会话中。我怀疑您接下来要做的是使用该会话调用 R 并将 RDS 保存到文件或 RAM 磁盘。然后在 RStudio 中,您可以读回该文件。查看 R 包rJython
和rPython
了解可以从 R 触发 python 命令的方法。或者,您可以编写一个简单的 python 脚本以在 Python 中加载数据(可能使用上述 R 包之一)并将格式化的数据流写入标准输出。然后,对脚本的整个系统调用(包括指定泡菜的参数)可以用作
fread
在 R 包data.table
中的参数。或者,如果您想保持标准功能,可以使用system(..., intern=TRUE)
和read.table
的组合。像往常一样,有/很多/方法可以给这只猫剥皮。基本步骤是:
fread
导出对象)fread
那么您已经完成了)。