是否可以找到同一列的所有数据的最小值,最大值和平均值?
例如,对于第一列1_204192587
:
考虑从4到n的所有行和列
**1_204192587**
在第4+列中查找所有条目的最小值,最大值和平均值,在第一列中查找所有具有值的行。
含义是,为每种如下所示的唯一起始值进行数据描述。
`In: data.groupby(["Start"]).groups.keys() out: dict_keys(['1_204192587', '1_204197200'])`
我试过了
df=data.groupby(["Start"]).describe()
但这不是我想要的。
我还尝试在描述时指定轴,
data.apply.(pd.DataFrame.describe, axis=1)
但是我出错了。
所需的输出
unique key/first column value MIN MAX AVG
1_204192587 * * *
1_204197200 * * *
我是初学者,在此先感谢您的答复。
我认为您想比较每个组中的所有数字列,因此将Start
列转换为index
,然后按DataFrame.select_dtypes
,选择整形DataFrame.stack
和最后DataFrameGroupBy.describe
按索引使用数字列:
data = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'Start':list('aaabbb')
})
df1 = data.set_index("Start").select_dtypes(np.number).stack().groupby(level=0).describe()
print (df1)
count mean std min 25% 50% 75% max
Start
a 12.0 5.000000 2.256304 1.0 3.75 5.0 6.25 9.0
b 12.0 3.833333 2.516611 0.0 2.00 4.0 5.00 9.0
或通过以下方式指定聚合函数列表GroupBy.agg
:
df2 = (data.set_index("Start")
.select_dtypes(np.number)
.stack()
.groupby(level=0)
.agg(['min','max','mean']))
print (df2)
min max mean
Start
a 1 9 5.000000
b 0 9 3.833333
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句