You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Vaex计算DataFrame各列最大值?解决调用报错问题

Vaex 获取DataFrame各列最小/最大值的正确方法

问题场景

我原本用Pandas计算DataFrame各列的最小/最大值,示例数据如下:

col_a  col_b  col_c
2      8      7
10     4      3
6      5      1

调用df.max()会得到每列的最大值:

col_a    10
col_b    8
col_c    7

现在要把这段Pandas代码转成Vaex实现:

bin_stats = {'min': df.min(),
             'max': df.max(),
             'binwidth': (df.max()-df.min()+10**-6)/bincount}    

# 转换数据到分箱位置以实现快速分箱
data = ((df - in_stats['min'])/bin_stats['binwidth']).apply(np.floor)

但调用df.max(column_names)时出现错误:

ValueError: Could not find a class (AggMax_object), seems object is not supported

请问如何获取各列最大值的数组?

解决方法

Vaex的API逻辑和Pandas有差异,要获取每列的最小/最大值,可按以下方式操作:

1. 获取单列/多列的统计值

  • 单列最大值直接传入列名字符串:
    col_a_max = df.max('col_a')
    
  • 多列最大值转为数组,可通过列表推导式遍历列名:
    import numpy as np
    max_values = np.array([df.max(col) for col in df.columns])
    

2. 批量构建bin_stats字典

对应原Pandas逻辑,Vaex可以这样批量计算并整理:

col_mins = {col: df.min(col) for col in df.columns}
col_maxs = {col: df.max(col) for col in df.columns}

bincount = 10  # 替换为你的分箱数
bin_stats = {
    'min': col_mins,
    'max': col_maxs,
    'binwidth': {col: (col_maxs[col] - col_mins[col] + 1e-6)/bincount for col in df.columns}
}

3. 向量化完成数据分箱

Vaex支持向量化操作,无需逐列循环,直接对整个DataFrame计算:

import numpy as np

min_array = np.array([df.min(col) for col in df.columns])
max_array = np.array([df.max(col) for col in df.columns])
binwidth_array = (max_array - min_array + 1e-6) / bincount

# 执行分箱转换
data = ((df - min_array) / binwidth_array).apply(np.floor)

关键注意点:Vaex中无参数的df.min()/df.max()会返回整个DataFrame的全局极值,而非每列的极值,这和Pandas的默认行为不同,因此必须指定列名来获取单列的统计值。

内容的提问来源于stack exchange,提问作者afriedman111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:24:16