首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当从多个hdf5文件读取数据时,vaex groupby给出了TypeError: unhashable类型:'Expression‘

问题描述:当从多个hdf5文件读取数据时,使用vaex库中的groupby函数时,出现了TypeError: unhashable类型:'Expression'的错误。

答案:出现这个错误的原因是在vaex库中,groupby函数要求被分组的表达式必须是可哈希的(hashable),但是在这个问题中,传入groupby函数的表达式是不可哈希的类型。

解决这个问题的方法是将表达式转换为可哈希的类型。在vaex库中,可以使用expression函数将表达式封装为可哈希的对象。以下是解决问题的步骤:

  1. 导入必要的库和模块:
代码语言:txt
复制
import vaex
  1. 读取多个hdf5文件并将它们合并成一个表:
代码语言:txt
复制
df = vaex.open('file1.hdf5')
df = df.concat(vaex.open('file2.hdf5'))
# 继续合并其他的文件
  1. 将表达式封装为可哈希的对象:
代码语言:txt
复制
expr = vaex.expression.Expression(df)
# 将表达式替换为你需要分组的列名或表达式
groupby_expr = expr['column_name']
  1. 使用封装后的表达式进行分组:
代码语言:txt
复制
result = df.groupby(groupby_expr, vaex.agg.sum(df['column_name']))

在上述代码中,我们首先导入了vaex库,然后使用open函数读取多个hdf5文件,并将它们合并成一个表。接下来,我们使用vaex.expression.Expression函数将表达式封装为可哈希的对象,并将其替换为需要分组的列名或表达式。最后,我们使用groupby函数进行分组,并指定需要进行聚合的列和聚合函数(此处使用了sum函数作为示例)。

注意:在这个答案中,我们没有提及任何特定的云计算品牌商,但你可以根据自己的需求选择适合的云计算平台或产品来使用vaex库进行开发和部署。

参考文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 在VMD上可视化hdf5格式的分子轨迹文件

    在处理分子动力学模拟的数据时,不可避免的会遇到众多的大轨迹文件。因此以什么样的格式来存储这些庞大的轨迹数据,也是一个在分子动力学模拟软件设计初期就应该妥善考虑的问题。现有的比较常见的方式,大致可以分为存成明文的和存成二进制的两种方式。这两种方式各有优劣,明文存储可读性较好,二进制文件压缩率较好,不会占用太大的空间。又因为我们也不会经常性的去打开轨迹文件一个一个的检索,因此二进制文件是一个更好的存储格式选项。如果不仅仅限于分子动力学模拟的领域,在其他数据领域经常用的格式有npz等。而经过各种格式的对比之后,发现hdf5格式是一种非常适合用来存储分子动力学轨迹的文件,其原因主要有:

    01

    深度学习中超大规模数据集的处理

    在机器学习项目中,如果使用的是比较小的数据集,数据集的处理上可以非常简单:加载每个单独的图像,对其进行预处理,然后输送给神经网络。但是,对于大规模数据集(例如ImageNet),我们需要创建一次只访问一部分数据集的数据生成器(比如mini batch),然后将小批量数据传递给网络。其实,这种方法在我们之前的示例中也有所涉及,在使用数据增强技术提升模型泛化能力一文中,我就介绍了通过数据增强技术批量扩充数据集,虽然那里并没有使用到超大规模的数据集。Keras提供的方法允许使用磁盘上的原始文件路径作为训练输入,而不必将整个数据集存储在内存中。

    02
    领券