熊猫据帧GROUPBY采用聚集
问题描述:
我有一个熊猫数据帧与数千行的,和这些的cols:熊猫据帧GROUPBY采用聚集
Name Job Department Salary Date
我想回到一个新的DF两个的cols:
Unique_Job Avg_Salary
的代码我用来做到这一点:
jobs = df.groupby(['Job'])
dict = {}
for a,b in jobs:
dict.update({a: b['Salary'].mean()})
dfJobs = pd.DataFrame(dict.items(), columns=['Unique_Job', 'Avg Salary'])
但是,我知道必须有更好的办法。想法?谢谢。
答
正如你已经有办法,我猜你做斗争从该系列中获得新的数据框,您将获得输出结果。您可以使用Series.to_frame()
和DataFrame.reset_index()
方法来创建具有两列的数据框,然后仅对列进行重命名。像这样:
jobs = df.groupby('Job')['Salary'].mean()
jobs = jobs.to_frame().reset_index()
jobs.columns = ['Unique_Job', 'Avg_Salary']
答
是的,使用groupby
对象的aggregate
方法。
jobs = df.groupby('Job').aggregate({'Salary': 'mean'})
甚至还有平均方法,快捷:
jobs = df.groupby('Job')['Salary'].mean()
见http://pandas.pydata.org/pandas-docs/stable/groupby.html 更多的信息和大量的实例
你刚刚在'jobs ['Salary']。mean()'上面,因为你已经在作业上分组了,所以我不明白是否需要再次迭代作业? – EdChum
我认为EdChum将它击中鼻子。 mean()将聚合每个组的数据。 – zach