对行子集的一列进行Pandas标准差

4
我是一个新手,正在使用Python和Pandas。目前我正在尝试创建一份报告,从SQL数据库中提取数据,并在Pandas数据框中使用这些数据。每行都有服务器名称和样品日期,然后是每列的样品数据。
我已经能够使用以下代码通过主机名进行过滤: df[df['hostname'] == uniquehost] 其中,df是数据框的变量,uniquehost是每个唯一主机名的变量。
接下来我想获取其他列的标准差,但我无法弄清楚如何做到这一点。我尝试使用以下代码: df[df['hostname'] == uniquehost].std()
但这是不正确的。
有谁可以指导我寻找适当的方向来解决这个问题吗?我怀疑我可能偏离了正确的方向,很可能有一种非常简单的方式来处理这个问题,但我还没有遇到过。
Hostname | Sample Date | CPU Peak | Memory Peak 
server1 | 08/08/17 | 67.32 | 34.83 
server1 | 08/09/17 | 34 | 62

你需要先展示一些数据和期望的输出。为什么这不正确? - cs95
抱歉,我不在我的工作笔记本电脑旁边。让我试着给出一个数据结构的例子。列如下:主机名 | 采样日期 | CPU 峰值 | 内存峰值 server1 | 08/08/17 | 67.32 | 34.83 server1 | 08/09/17 | 34 | 62这是各个服务器的数据类型。 - Thomas
你想对什么进行标准差? - cs95
另外,您是否想要找到每个唯一主机的标准差? - cs95
我想要CPU峰值和内存峰值的标准差。我正在尝试获取每个服务器的CPU和内存读数的标准差。 - Thomas
显示剩余2条评论
1个回答

4

如果我理解正确,你需要先使用df.groupbyHostname进行分组,然后再找到标准差。可以尝试如下代码:

In [118]: df.groupby('Hostname')[['CPU Peak', 'Memory Peak']].std()
Out[118]: 
           CPU Peak  Memory Peak
Hostname                        
server1   23.560798    19.212091

太棒了,谢谢。我会试试看并且回复您。 - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接