繁体   English   中英

如何通过 Vaex 计算每列的最大行值

[英]How to calculate the max row value for each column through Vaex

我有一个应用程序使用 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

作为参考,我正在尝试转换以下代码:

bin_stats = {'min': df.min(),
             'max': df.max(),
             'binwidth': (df.max()-df.min()+10**-6)/bincount}    
 
# Transform data into bin positions for fast binning
data = ((df - in_stats['min'])/bin_stats['binwidth']).apply(np.floor)

我正在将我的功能转换为 Vaex,我需要像上面一样打印出 dataframe 中每一列的最大行值。我尝试了 df.max(column_names) 但我收到错误: ValueError: Could not find a class (AggMax_object), seems object is not supported 如何获得最大值数组?

在 vaex 你可以做df.max() 您需要传递要获取最大值的表达式或表达式列表。

考虑这个例子:

import vaex

df = vaex.example()
columns = df.get_column_names(dtype='numeric')
df.max(columns)

# returns array([ 3.2000000e+01,  1.3049751e+02,  6.0022778e+01,  5.4506802e+01,
                  6.3641956e+02,  5.7964453e+02,  5.3974872e+02,  3.5941863e+04,
                  3.7393040e+03,  1.7840929e+03, -3.0200911e-01], dtype=float32)

请注意,vaex 有一个df.minmax()方法,可以在单次传递数据中为您获取最小值和最大值(即,如果您的数据较大,则速度更快)。

float_columns = df.get_column_names(dtype='float')
df.minmax(float_columns)

说了这么多,vaex 擅长分箱,所以可能值得研究如何以“vaex-native”方式实现你想要的,而不是直接将 pandas 代码翻译成 vaex。 它应该可以工作,但您可能无法获得最佳性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM