Pandas数据帧groupby with aggregation

2024-05-21 02:23:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含数千行的Pandas数据帧,这些cols:

Name    Job   Department   Salary    Date 

我想返回一个带有两个col的新df:

^{pr2}$

我用来完成这个任务的代码:

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'])

不过,我知道肯定有更好的办法。思想?谢谢。在


Tags: 数据代码namepandasdfdatejobsjob
2条回答

由于您已经有了方法,我想您很难从该系列中生成新的数据帧,您将得到作为输出。可以使用Series.to_frame()DataFrame.reset_index()方法使dataframe具有两个列,然后只重命名这些列。像这样:

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'})

甚至还有一种方法可以作为捷径:

^{pr2}$

http://pandas.pydata.org/pandas-docs/stable/groupby.html 更多的信息和大量的例子

相关问题 更多 >