有没有一种简单的方法可以将Pandas Dataframe中的pickle文件(.pkl)读入R?
一种可能性是导出到CSV并让R读取CSV,但这对我来说似乎非常麻烦,因为我的数据帧相当大。有更简单的方法吗?
谢谢!
答案 0 :(得分:10)
Reticulate非常简单且超级流畅。
sp_start_job
之后,我从他们的文档中给出的示例中创建了一个像这样的Python脚本。
Python文件:
curl --request POST --url http://app_domain/v1/posts/ --header 'authorization: TOKEN aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' --header 'accept: application/json' --header 'content-type: application/json' --form 'media=@path/1.mp4' --form 'description="My first Video"'
{"detail":"JSON parse error - 'utf-8' codec can't decode byte 0xba in position 193: invalid start byte"}
curl --request POST --url http://app_domain/v1/posts/ --header 'authorization: TOKEN aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' --header 'accept: application/json' --header 'content-type: application/json' --form 'media=@path/1.mp4&description="My first Video"'
Warning: setting file path/1.mp4&description="My first Video"
Warning: failed!
curl: (26) read function returned funny value
curl --request POST --url http://app_domain/v1/posts/ --header 'authorization: TOKEN aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' --header 'accept: application/json' --header 'content-type: application/json' --form 'media=@path/1.mp4 description="My first Video"'
Warning: setting file path/1.mp4 description="Myfirst Video"
Warning: failed!
curl: (26) read function returned funny value
然后我的R文件如下:
install.packages('reticulate')
这给了我所有以R泡菜格式存储在R中的数据。
答案 1 :(得分:6)
您可以在python中加载pickle,然后通过python包rpy2
(或类似)将其导出到R.完成后,您的数据将存在于链接到python的R会话中。我怀疑你接下来要做的就是使用该会话来调用R并将saveRDS调用到文件或RAM磁盘。然后在RStudio中,您可以重新读取该文件。查看R包rJython
和rPython
,了解从R触发python命令的方法。
或者,您可以编写一个简单的python脚本来加载Python中的数据(可能使用上面提到的R包之一)并将格式化的数据流写入stdout。然后整个系统调用脚本(包括指定你的pickle的参数)可以用作R包fread
中data.table
的参数。或者,如果您想保留标准功能,可以使用system(..., intern=TRUE)
和read.table
的组合。
像往常一样,有很多/很多方法可以为这只特殊的猫提供皮肤。基本步骤是:
fread
导出对象)fread
那么您已经完成了) 答案 2 :(得分:3)
要添加到上面的答案中,您可能需要指向另一个conda env才能进入熊猫:
use_condaenv("name_of_conda_env", conda = "<<result_of `which conda`>>")
pd <- import('pandas')
df <- pd$read_pickle(paste0(outdir, "df.pkl"))