如何在 R 中加载以 HDF5 文件形式保存在 pandas 中的数据帧?

2024-03-17

我将 pandas 中的数据帧保存在 HDF5 文件中:

import numpy as np
import pandas as pd
np.random.seed(1)
frame = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), 
                     index=['Utah', 'Ohio', 'Texas', 'Oregon'])
print('frame: {0}'.format(frame))
store = pd.HDFStore('file.h5')
store['df'] =  frame
store.close()

框架如下:

frame:                b         d         e
Utah              1.624345 -0.611756 -0.528172
Ohio             -1.072969  0.865408 -2.301539
Texas             1.744812 -0.761207  0.319039
Oregon           -0.249370  1.462108 -2.060141

我正在尝试将其加载到 R 中:

#source("http://bioconductor.org/biocLite.R")
#biocLite("rhdf5")    
library(rhdf5)
frame = h5ls("file.h5")    
frame

然而,一旦加载到 R 中,它看起来如下:

> frame
  group          name       otype dclass   dim
0     /            df   H5I_GROUP             
1   /df         axis0 H5I_DATASET STRING     3
2   /df         axis1 H5I_DATASET STRING     4
3   /df  block0_items H5I_DATASET STRING     3
4   /df block0_values H5I_DATASET  FLOAT 3 x 4
> 

我也尝试过:

frame2 = h5read("file.h5", '/df')
frame2

但是它返回几个值但没有数据框:

> frame2
$axis0
[1] "b" "d" "e"

$axis1
[1] "Utah"   "Ohio"   "Texas"  "Oregon"

$block0_items
[1] "b" "d" "e"

$block0_values
           [,1]       [,2]       [,3]       [,4]
[1,]  1.6243454 -1.0729686  1.7448118 -0.2493704
[2,] -0.6117564  0.8654076 -0.7612069  1.4621079
[3,] -0.5281718 -2.3015387  0.3190391 -2.0601407

如何在 R 中加载以 HDF5 文件形式保存在 pandas 中的数据帧?


Update这是 pandas 文档中推荐的方法:https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#external-compatibility https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#external-compatibility


From https://github.com/pandas-dev/pandas/issues/9636 https://github.com/pandas-dev/pandas/issues/9636(谢谢约翰·高尔特 https://stackoverflow.com/users/2137255/john-galt向我指出此资源):

R 的 HDF5 导出示例

import numpy as np
import pandas as pd

np.random.seed(1)
df = pd.DataFrame({"first": np.random.rand(100),
                   "second": np.random.rand(100),
                   "class": np.random.randint(0, 2, (100,))},
                   index=range(100))

print(df.head())

store = pd.HDFStore("transfer.hdf5", "w", complib=str("zlib"), complevel=5)
store.put("dataframe", df, data_columns=df.columns)
store.close()

Output:

   class     first    second
0      0  0.417022  0.326645
1      0  0.720324  0.527058
2      1  0.000114  0.885942
3      1  0.302333  0.357270
4      1  0.146756  0.908535

In R:

# Load values and column names for all datasets from corresponding nodes and
# insert them into one data.frame object.

library(rhdf5)

loadhdf5data <- function(h5File) {

listing <- h5ls(h5File)
# Find all data nodes, values are stored in *_values and corresponding column
# titles in *_items
data_nodes <- grep("_values", listing$name)
name_nodes <- grep("_items", listing$name)

data_paths = paste(listing$group[data_nodes], listing$name[data_nodes], sep = "/")
name_paths = paste(listing$group[name_nodes], listing$name[name_nodes], sep = "/")

columns = list()
for (idx in seq(data_paths)) {
  data <- data.frame(t(h5read(h5File, data_paths[idx])))
  names <- t(h5read(h5File, name_paths[idx]))
  entry <- data.frame(data)
  colnames(entry) <- names
  columns <- append(columns, entry)
}

data <- data.frame(columns)

return(data)
}

现在您可以导入 DataFrame:

> data = loadhdf5data("transfer.hdf5")
> head(data)
         first    second class
1 0.4170220047 0.3266449     0
2 0.7203244934 0.5270581     0
3 0.0001143748 0.8859421     1
4 0.3023325726 0.3572698     1
5 0.1467558908 0.9085352     1
6 0.0923385948 0.6233601     1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R 中加载以 HDF5 文件形式保存在 pandas 中的数据帧? 的相关文章

随机推荐

  • 如何在android库gradle项目中包含依赖项?

    我正在使用 Android Studio 使用 Gradle 构建一个 android 库项目 它有一些本地依赖项 compile project androidlibrary 具有嵌套的附加外部依赖项 compile group com
  • 如何在 xsl:apply-templates 中使用 XSL 变量?

    我对 xsl apply templates 有一个相当复杂的调用
  • PHP 用一个 HTML Break 替换双行 [重复]

    这个问题在这里已经有答案了 我正在尝试将我的服务器上的所有 n n 替换为 br 标记 以便单个 n 不会变成 br Example Hello n nThis is an nexample n nThanks goes to Hello
  • 交换 jQuery 中的两个元素

    我正在尝试使用向上和向下箭头交换两个元素 JSFiddle 解决方案会很棒 My HTML div class item div class content Some text div div class move div class mo
  • 如何使用双括号初始化 Map of Map

    我确实明白双括号初始化有其自己的隐藏成本 仍然有可能的初始化方法Map
  • 如何判断库是使用 C++11 编译的

    如何判断某个 C 库是否已使用链接 c 11 标准 elf 二进制文件默认包含所使用的编译器版本的签名 现在 关于使用的编译器标志 如果 frecord gcc switches在编译时使用 然后 您可以在ELF可执行文件中找到签名 g f
  • 如何使用单点触摸更改 UISlider 值?

    我正在开发我的第一个 iOS 应用程序 其中包含UISlider 我知道当UISlider被拖拽 但对于我的应用程序 我需要通过一次触摸获取滑块的值 即如果我触摸某处UISlider a UILabel应该显示其正确的值 这样子可以吗 任何
  • 选择源代码控制系统:VSS 之后的逻辑下一步

    过去几个月我一直在使用 Git 并且很喜欢它 我研究了如何在企业环境中托管它 考虑到一个 10 人团队使用 Visual SourceSafe 使用 Coldfusion Powerbuilder PHP 和一些 NET 进行编程 令我惊讶
  • 如何使用 Apache POI 在 Word .docx 文件中正确生成 RSID 属性?

    我一直在使用 Apache POI 来操作 Microsoft Word docx 文件 即打开最初在 Microsoft Word 中创建的文档 对其进行修改 然后将其保存到新文档中 我注意到 Apache POI 创建的新段落缺少修订保
  • CVS:列出标签(或日期)之间更改的所有文件

    有没有办法列出CVS中两个标签之间发生更改的所有文件 每次我们发布版本时 我们都会向该版本中的所有文件应用一个标签 我想找到版本之间更改的所有文件 如果我能找到两个日期之间更改的所有文件 它也会起作用 我想这个命令会有帮助 cvs diff
  • 使用项目反应器 mergeWith() 运算符来实现“if/elseif/else”分支逻辑

    我正在尝试使用项目反应堆 mergeWith运算符以实现if elseif else分支逻辑如下所述 RxJS If Else 运算符在哪里 https rangle io blog rxjs where is the if else op
  • 来自两个派生类的多重继承

    我有一个充当接口的抽象基类 我有两个派生类 集 它们实现了抽象类的一半 一个 集合 定义与初始化相关的抽象虚拟方法 另一个 集合 定义与实际 工作 相关的方法 然后 我有派生类 它们使用多重继承来构造完全定义的类 并且本身不添加任何内容 所
  • 大虾:在PDF中打印unicode字符串

    我正在使用 Prawn 在 Rails 3 应用程序中生成 PDF 是否可以像在 HTML 视图中一样将 Unicode 字符串打印到 PDF 中 例如 in show html erb结果字形 同时 pdf text raw unicod
  • 加密且安全的 Docker 容器

    我们都知道无法开源并自由分发软件的情况 而我就处于其中一种情况 我有一个应用程序 它由许多二进制文件 从 C 源代码编译 和将其全部包装到系统中的 Python 代码组成 该应用程序曾经作为云解决方案工作 因此用户可以通过网络访问应用程序功
  • 使用 ws4py 创建自己的应用程序

    我使用 ws4py 创建了一个 Web 服务器套接字 它使用了cherrypy 当我使用连接到服务器时ip port它连接完美 并且能够通过多个浏览器聊天 但是当我尝试连接时ip port ws它也有效 但是 在我不使用连接后ws 我无法握
  • jQuery 中的多个选择器

    我正在尝试运行这段代码 input value OK value Recrutar value Criar id attack name btn click 因此 如您所见 我正在尝试选择一个值等于 OK 或 Recrutar 或 Cria
  • 为什么IntelliJ Idea找不到GO SDK的位置?

    我下载了go1 4 darwin amd64 osx10 8 tar gz https golang org dl 并将其解压到我的本地目录中 基于什么安装到自定义位置 https golang org doc install说我在环境变量
  • jQuery - 专注于 TR

    好的 所以我正在制作一个插件 允许在我的网站中内联编辑表格 到目前为止进展顺利 我已经完成了大部分工作 但我似乎无法正确地将焦点移出表格 因此 如果有人完成编辑并开始编辑新行或只是单击该行之外的内容 则应该保存并恢复正常 但是 如果我在行上
  • Android NumberPicker 隐藏递增和递减按钮

    我正在使用一个数字选择器 http developer android com reference android widget NumberPicker html并且目标是 API 11 及更高版本 3 0 及更高版本 因此我使用受支持的
  • 如何在 R 中加载以 HDF5 文件形式保存在 pandas 中的数据帧?

    我将 pandas 中的数据帧保存在 HDF5 文件中 import numpy as np import pandas as pd np random seed 1 frame pd DataFrame np random randn 4