我有一个数据帧熊猫df
形状的(100, 10)
(100行,10个COLS),并且我想生成一个数据帧df_summary
从df
该:
(1, 4)
为[[col1],'col2','col3','col4']的列名mean
的df
第1列,第2-4列(这三列中所有行的平均值),第5-8列和第9-10列variance
的df
第1列,第2-4列,第5-8列和第9-10列我做了研究,但仍然不知道如何有效地做到这一点。任何帮助将不胜感激。
这是2个解决方案,首先是在列表中指定范围,stack
然后通过Series.agg
传递给concat
:
np.random.seed(2020)
df = pd.DataFrame(np.random.randint(10, size=(100, 10)))
L = [[0], range(2, 4), range(5, 8), range(8, 10)]
cols = ['col1', 'col2', 'col3', 'col4']
out = pd.concat([df[x].stack().agg(['mean','var']) for x in L], axis=1, keys=cols)
print (out)
col1 col2 col3 col4
mean 4.120000 4.270000 4.580000 4.405000
var 8.793535 8.298593 7.963478 9.418065
或对于使用范围cut
,取消透视DataFrame.melt
,然后mean
与聚合var
:
cols = ['col1', 'col2', 'col3', 'col4']
df.columns = pd.cut(df.columns, [0,1,5,8,11], labels=cols, include_lowest=True, right=False)
df = df.melt().groupby('variable')['value'].agg(['mean','var']).T
print (df)
variable col1 col2 col3 col4
mean 4.120000 4.482500 4.580000 4.405000
var 8.793535 8.611222 7.963478 9.418065
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句