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

python – 指定groupby聚合后的列顺序,第1张

概述我的年龄,身高和体重列的排序随着每次运行代码而变化.我需要保持我的agg列的顺序为静态,因为我最终根据列位置引用此输出文件.我该怎样做才能确保每次都以相同的顺序输出年龄,身高和体重? d = pd.read_csv(input_file, na_values=[''])df = pd.DataFrame(d)df.index_col = ['name', 'address']df_out 我的年龄,身高和体重列的排序随着每次运行代码而变化.我需要保持我的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  weight0       a    7       1    q       51       a    8       3    q       32       s    9       5    a       63       s   10       7    a       8df.index_col = ['name','address']df_out = df.groupby(df.index_col)           .agg({'age':'mean','weight']]print (df_out)              age  height  weightname address                     a    s        9.5      12      14q    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  weight0    a       s  9.5      12      141    q       a  7.5       4       8
总结

以上是内存溢出为你收集整理的python – 指定groupby聚合后的列顺序全部内容,希望文章能够帮你解决python – 指定groupby聚合后的列顺序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193769.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存