Python 无法在groupby聚合中使用某些基本统计函数

Python 无法在groupby聚合中使用某些基本统计函数,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我做了一个实验,测量不同“力”和“扫描速度”下的“深度”。每组变量进行五次运行 我必须计算五次测量的最大深度以及测量的标准偏差。为此,我构建了一个熊猫数据框架,如下所示: force scanspeed depth 0 0.5 10 3.541 1 0.5 20 2.531 2 0.5 10 3.020 3 1 10 2.130 4 0.5

我做了一个实验,测量不同“力”和“扫描速度”下的“深度”。每组变量进行五次运行

我必须计算五次测量的最大深度以及测量的标准偏差。为此,我构建了一个熊猫数据框架,如下所示:

   force  scanspeed  depth
0    0.5         10     3.541  
1    0.5         20     2.531
2    0.5         10     3.020
3      1         10     2.130
4    0.5         20     1.502
5    0.5         10     4.102
6      2         50     2.413
...
(100+ rows)
对于此数据帧,我想使用
force
scanspeed
列进行分组,并为每组生成最大和标准偏差(有多行具有相同的force和scanspeed)。但是,在运行以下行时:

打印(子帧.groupby(['force','scanspeed'])['depth'].agg([max,std]))

无法识别函数
std
,提示
name错误:未定义名称“std”

其他被发现不起作用的函数包括:
平均值
中值
corr
var
计数
np.std
。我还没有测试所有可用的函数,但到目前为止,似乎只有
max
min
可以工作,尽管所有这些函数都来自同一个pandas库(当然除了np.std)


如果您确定在该语句范围内可以访问
np.std
agg
还允许您将某些函数的名称作为字符串传递:

print(subframe.groupby(['force', 'scanspeed'])['depth'].agg([max, 'std']))
这条线似乎对我有用,除了熊猫,我什么都不进口



否则,可以在该语句之前尝试调用
np.std([0,1])
,以确保它不会抛出错误。或者您可以尝试在前面的行中输入
import numpy as np

其他函数如
mean
都是函数。只要把它输入终端,你就会得到
。键入
std
,您会得到
namererror
。但是,
pandas
具有方便的方法,因此
'std'
允许您参考
Series.std()
。有关此问题的相关文档如下:以字符串形式传递
std
,抛出不支持的操作数类型-:“float”和“str”。也许我的数据类型有问题,我会调查一下。np.std([0,1])成功地输出了0.5。事实上,数据类型才是问题所在。在pandas数据框架中,我在最初的问题中没有提到其他列,其中“批号”列包含字符串。删除此列可以解决此错误,尽管我不确定原因,因为没有对该列执行任何操作。