将数据帧从 python 传输到 julia
Posted
技术标签:
【中文标题】将数据帧从 python 传输到 julia【英文标题】:transfer a data frame from python to julia 【发布时间】:2018-12-03 19:10:00 【问题描述】:我有一个 250 列和 4562 行的数据框。我想在 Julialang 中使用它。我曾尝试使用 HDF5 传输数据,但读取文件时出错。 代码:
using HDF5
using DataFrames
data=h5open("Database.h5")
typeof(data)
println("names \n",names(data))
println("\n dump")
println(names(data))
m=data["nse"]
println(names(m))
jj=m["table"]
s=read(jj)
这是我得到的错误:
HDF5-DIAG: Error detected in HDF5 (1.10.2) thread 0:
#000: H5O.c line 120 in H5Oopen(): unable to open object
major: Object header
minor: Can't open object
#001: H5Oint.c line 553 in H5O_open_name(): unable to open object
major: Object header
minor: Can't open object
#002: H5Oint.c line 589 in H5O_open_by_loc(): unable to determine object class
major: Object header
minor: Can't get value
#003: H5Oint.c line 1575 in H5O_obj_class(): unable to load object header
major: Object header
minor: Unable to protect metadata
#004: H5Oint.c line 889 in H5O_protect(): unable to load object header
major: Object header
minor: Unable to protect metadata
#005: H5AC.c line 1763 in H5AC_protect(): H5C_protect() failed
major: Object cache
minor: Unable to protect metadata
#006: H5C.c line 2565 in H5C_protect(): can't load entry
major: Object cache
minor: Unable to load metadata into cache
#007: H5C.c line 6733 in H5C_load_entry(): invalid len with respect to EOA
major: Object cache
minor: Bad value
#008: H5C.c line 6657 in H5C__verify_len_eoa(): len not positive after adjustment for EOA
major: Object cache
minor: Bad value
String["_i_table", "table"]
非常感谢任何帮助!
【问题讨论】:
a) 尝试h5read("Database.h5")
而不是h5open()
,否则data
是文件指针,而不是数据本身 b) 是Database.h5
与您的 julia 文件在同一目录中?
我也试过 h5open()。同样的错误。是的,数据库在同一目录中。
【参考方案1】:
为此,我总是使用feather format。
例如在python中
import feather
feather.write_dataframe(df, "path/to/file.feather")
然后在 Julia 中
using DataFrames, Feather
df = Feather.read("path/to/file.feather")
您也可以从 R 加载/保存。
【讨论】:
谢谢!!这行得通。我在 python 中安装了羽毛格式包。以上是关于将数据帧从 python 传输到 julia的主要内容,如果未能解决你的问题,请参考以下文章
使用 rmongodb 和 plyr 将大型 MongoDB 集合传输到 R 中的 data.frame
将数据帧从 pandas 转换为 pyspark 到 Foundry 的数据类型