Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将聚合函数应用于datatable列并返回值,而不是datatable_Python_Py Datatable - Fatal编程技术网

Python 将聚合函数应用于datatable列并返回值,而不是datatable

Python 将聚合函数应用于datatable列并返回值,而不是datatable,python,py-datatable,Python,Py Datatable,也许是个愚蠢的问题,但是 在中,如果我想得到一列的平均值,我可以引用一个列向量,比如foo$x,然后用meanfoo$x计算它的平均值 我想不出怎么用它来做这个手术。比如说, # imports import numpy as np import datatable as dt from datatable import f # make datatable np.random.seed(1) foo = dt.Frame({'x': np.random.randn(10)}) # calc

也许是个愚蠢的问题,但是

在中,如果我想得到一列的平均值,我可以引用一个列向量,比如foo$x,然后用meanfoo$x计算它的平均值

我想不出怎么用它来做这个手术。比如说,

# imports
import numpy as np
import datatable as dt
from datatable import f

# make datatable
np.random.seed(1)
foo = dt.Frame({'x': np.random.randn(10)})

# calculate mean
dt.mean(foo.x)  # error
dt.mean(foo[:, f.x])  # Expr:mean(<Frame [10 rows x 1 col]>) ???
foo[:, dt.mean(f.x)][0, 0]  # -0.0971
虽然最后一条语句在技术上可行,但它首先返回一个1x1数据表,我从中提取唯一的值,这似乎过于繁琐。我正在努力解决的基本问题是,我不知道python datatable中是否存在列向量和/或如何引用它们


简而言之,有没有一种更简单的方法可以使用python datable计算列的平均值?

稍微概括一下,让我们从一个包含多个列的框架开始:

>>> import numpy as np
>>> from datatable import f, dt
>>> np.random.seed(1)
>>> foo = dt.Frame(x=np.random.randn(10), y=np.random.randn(10))
>>> foo
            x           y
--  ---------  ----------
 0   1.62435    1.46211  
 1  -0.611756  -2.06014  
 2  -0.528172  -0.322417 
 3  -1.07297   -0.384054 
 4   0.865408   1.13377  
 5  -2.30154   -1.09989  
 6   1.74481   -0.172428 
 7  -0.761207  -0.877858 
 8   0.319039   0.0422137
 9  -0.24937    0.582815 

[10 rows x 2 columns]
首先,simple.mean方法将返回一个1x2帧,每列平均值为:

>>> foo.mean()
             x          y
--  ----------  ---------
 0  -0.0971409  -0.169588

[1 row x 2 columns]
如果需要单个列的平均值,必须首先从foo中选择该列:foo[:,f.y],或foo[:,'y'],或仅从foo['y']中选择:

现在,如果希望使用数字而不是1x1帧,可以使用[0,0]选择器或调用函数。mean1:

>>> foo['y'].mean()
            y
--  ---------
 0  -0.169588

[1 row x 1 column]
>>> foo['y'].mean()[0, 0]
-0.1695883821153589

>>> foo['y'].mean1()
-0.1695883821153589