[英]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.