修改Python Pandas描述的输出

时间:2013-10-01 19:19:06

标签: python pandas

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

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

然而,这就是我想要的,数数和意思。我想删除std,min,max等...到目前为止,我只阅读了如何修改列大小。

我猜答案是重写这一行,而不是使用describe,但我没有通过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 个答案:

答案 0 :(得分:18)

描述返回一个系列,因此您可以选择您想要的内容

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

答案 1 :(得分:4)

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

@Rafa就是重点:df.describe().info()显示结果数据框有Index: 8 entries, count to max

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

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

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

Y分组df:

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

答案 2 :(得分:2)

看着答案,在使用groupby()之后,我看不到一个真正适用于describe()返回的DataFrame的视图。

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

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

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

答案 3 :(得分:0)

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

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