加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 指定groupby聚合后的列顺序

发布时间:2020-12-20 11:55:18 所属栏目:Python 来源:网络整理
导读:我的年龄,身高和体重列的排序随着每次运行代码而变化.我需要保持我的agg列的顺序为静态,因为我最终根据列位置引用此输出文件.我该怎样做才能确保每次都以相同的顺序输出年龄,身高和体重? d = pd.read_csv(input_file,na_values=[''])df = pd.DataFrame(d)df
我的年龄,身高和体重列的排序随着每次运行代码而变化.我需要保持我的agg列的顺序为静态,因为我最终根据列位置引用此输出文件.我该怎样做才能确保每次都以相同的顺序输出年龄,身高和体重?

d = pd.read_csv(input_file,na_values=[''])
df = pd.DataFrame(d)
df.index_col = ['name','address']

df_out = df.groupby(df.index_col).agg({'age':np.mean,'height':np.sum,'weight':np.sum})
df_out.to_csv(output_file,sep=',')

解决方法

我想你可以使用子集:

df_out = df.groupby(df.index_col)
           .agg({'age':np.mean,'weight':np.sum})[['age','height','weight']]

你也可以使用pandas功能:

df_out = df.groupby(df.index_col)
           .agg({'age':'mean','height':sum,'weight':sum})[['age','weight']]

样品:

df = pd.DataFrame({'name':['q','q','a','a'],'address':['a','s','s'],'age':[7,8,9,10],'height':[1,3,5,7],'weight':[5,6,8]})

print (df)
  address  age  height name  weight
0       a    7       1    q       5
1       a    8       3    q       3
2       s    9       5    a       6
3       s   10       7    a       8
df.index_col = ['name','address']
df_out = df.groupby(df.index_col)
           .agg({'age':'mean','weight']]

print (df_out)
              age  height  weight
name address                     
a    s        9.5      12      14
q    a        7.5       4       8

按建议编辑 – 添加reset_index,如果需要索引值,则as_index = False不起作用:

df_out = df.groupby(df.index_col)
           .agg({'age':'mean','weight']]
           .reset_index()

print (df_out)
  name address  age  height  weight
0    a       s  9.5      12      14
1    q       a  7.5       4       8

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读