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 按建议编辑 – 添加 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |