熊猫-生成由数据框子集摘要组成的数据框

泰迪C

我有一个数据帧熊猫df形状的(100, 10)(100行,10个COLS),并且我想生成一个数据帧df_summarydf该:

  • 形状(1, 4)为[[col1],'col2','col3','col4']的列名
  • 第1行包含meandf第1列,第2-4列(这三列中所有行的平均值),第5-8列和第9-10列
  • 第二行包含variancedf第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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章