首页 > 解决方案 > 无法在 Pandas groupby 聚合中使用某些基本统计功能

问题描述

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

我必须计算在五次运行中测量的最大深度以及测量的标准偏差。为此,我构建了一个 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)

对于这个数据框,我想使用forcescanspeed列进行分组,并为每个组生成最大偏差和标准偏差(有多行具有相同的力和扫描速度)。但是,在运行以下行时:

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

我将不胜感激有关此问题的任何帮助。

标签: pythonpandaspandas-groupby

解决方案


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

print(subframe.groupby(['force', 'scanspeed'])['depth'].agg([max, 'std']))

那条线似乎对我有用,除了熊猫之外没有导入任何东西。


否则,也许可以在该语句之前尝试调用np.std([0,1]),以确保它也不会引发错误。或者你可以试着在import numpy as np之前就上线。


推荐阅读