22

有没有办法省略熊猫描述的一些输出?这个命令给了我我想要的表格输出(通过 simpleDate 计算的 executeTime 的计数和平均值)

df.groupby('simpleDate').executeTime.describe().unstack(1)

然而,这就是我想要的,数数和平均数。我想删除标准、最小值、最大值等...到目前为止,我只阅读了如何修改列大小。

我猜答案将是重写该行,而不是使用描述,但我没有任何运气按 simpleDate 分组在 executeTime 上获得平均值。

我可以按日期计算:

df.groupby(['simpleDate']).size()

或按日期执行时间:

df.groupby(['simpleDate']).mean()['executeTime'].reset_index()

但无法弄清楚将它们组合起来的语法。

我想要的输出:

            count  mean  
09-10-2013      8  20.523   
09-11-2013      4  21.112  
09-12-2013      3  18.531
...            ..  ...
4

5 回答 5

33

.describe()属性生成一个数据框,其中 count,std,max... 是索引的值,因此根据您应该使用的文档,例如:

df.describe().loc[['count','max']]
于 2015-09-11T07:26:50.703 回答
32

描述返回一个系列,所以你可以选择你想要的

In [6]: s = Series(np.random.rand(10))

In [7]: s
Out[7]: 
0    0.302041
1    0.353838
2    0.421416
3    0.174497
4    0.600932
5    0.871461
6    0.116874
7    0.233738
8    0.859147
9    0.145515
dtype: float64

In [8]: s.describe()
Out[8]: 
count    10.000000
mean      0.407946
std       0.280562
min       0.116874
25%       0.189307
50%       0.327940
75%       0.556053
max       0.871461
dtype: float64

In [9]: s.describe()[['count','mean']]
Out[9]: 
count    10.000000
mean      0.407946
dtype: float64
于 2013-10-01T19:31:15.517 回答
13

查看答案,我没有看到在使用 groupby() 后从 describe() 返回的 DataFrame 上实际工作的答案。

MultiIndex selection的文档给出了答案的提示。.xs() 函数适用于一个但不是多个选择,但 .loc 有效。

df.groupby(['simpleDate']).describe().loc[:,(slice(None),['count','max'])]

这保留了 .describe() 返回的漂亮 MultiIndex,但只选择了列。

于 2020-11-18T21:26:10.137 回答
5

@Jeff 提供的解决方案仅适用于系列。

@Rafa 很重要:df.describe().info()表明生成的数据框有Index: 8 entries, count to max

df.describe().loc[['count','max']]确实有效,但是df.groupby('simpleDate').describe().loc[['count','max']]OP 所要求的,不起作用。

我认为解决方案可能是这样的:

df = pd.DataFrame({'Y': ['A', 'B', 'B', 'A', 'B'],
                    'Z': [10, 5, 6, 11, 12],
                                        })

将df分组Y

df_grouped=df.groupby(by='Y')     


In [207]df_grouped.agg([np.mean, len])

Out[207]: 
        Z    
     mean len
Y            
A  10.500   2
B   7.667   3
于 2016-11-22T23:13:24.043 回答
1

坚持使用描述,您可以取消堆叠索引,然后也可以正常切片

df.describe().unstack()[['count','max']]

于 2017-10-12T03:49:14.870 回答