python - 无法在 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)
对于这个数据框,我想使用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
我将不胜感激有关此问题的任何帮助。
解决方案
如果您确定np.std
在该语句范围内可以访问,agg
还允许您将某些函数的名称作为字符串传递:
print(subframe.groupby(['force', 'scanspeed'])['depth'].agg([max, 'std']))
那条线似乎对我有用,除了熊猫之外没有导入任何东西。
否则,也许可以在该语句之前尝试调用np.std([0,1])
,以确保它也不会引发错误。或者你可以试着在import numpy as np
之前就上线。
推荐阅读
- jquery - 从外部文件jQuery加载表数据
- html - 工具提示物化不会出现在每个元素的顶部
- javascript - AMcharts 图表 y 轴上的 2 个时间序列
- wordpress - 用于取消已删除产品的 WC 订单的 Wordpress cronjob?
- graphql - 返回 graphql 错误时,如何捕获 RelayObervable Unhandled 错误?
- c# - 如何在 WPF 中覆盖最大化按钮?
- c++ - 尝试设置唯一指针布尔数组的值时出现 BAD_ACCESS 错误
- python - 如何识别使用 pydal 使用 sqlalchemy 创建的 sqlite 数据库?
- android - 插页式广告关闭后如何在 recyclerview 适配器中执行事件意图?
- sql - 如果任何值为 NULL SQL,则不返回行