熊猫据帧GROUPBY采用聚集

熊猫据帧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']) 

但是,我知道必须有更好的办法。想法?谢谢。

+0

你刚刚在'jobs ['Salary']。mean()'上面,因为你已经在作业上分组了,所以我不明白是否需要再次迭代作业? – EdChum

+0

我认为EdChum将它击中鼻子。 mean()将聚合每个组的数据。 – zach

正如你已经有办法,我猜你做斗争从该系列中获得新的数据框,您将获得输出结果。您可以使用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 更多的信息和大量的实例