有没有办法省略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
... .. ...
答案 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']]