我有一个实验,其中测量“深度”以改变“力”和“扫描速度”。每组变量进行五次运行。
我必须计算五次运行中测得的最大深度以及测量的标准偏差。为此,我构建了一个Pandas数据框,如下所示:
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
列进行分组,并为每个组生成最大偏差和标准偏差(有多行具有相同的作用力和扫描速度)。但是,在运行以下行:
print(subframe.groupby(['force', 'scanspeed'])['depth'].agg([max, std]))
无法识别功能std
,并提示NameError: name 'std' is not defined
。
发现其他无效的功能包括:mean
,median
,corr
,var
,count
,np.std
。我尚未测试可用的全部功能,但到目前为止,尽管所有这些功能都来自同一个Pandas库(当然还有np.std),但似乎只有max
和min
有效。
对于此问题的任何帮助,我们将不胜感激。
答案 0 :(得分:1)
如果您确定在该语句范围内还可以访问np.std
,则agg
还允许您将某些函数的名称作为字符串传递:
print(subframe.groupby(['force', 'scanspeed'])['depth'].agg([max, 'std']))
这条线似乎对我有用,除了熊猫以外,什么都不导入。
否则,也许在该语句之前尝试调用np.std([0,1])
之类的调用,以确保它也不会引发错误。或者,您可以尝试在之前的行中插入import numpy as np
。