首页 > 解决方案 > 如何使用 pandas groupby() 显示每列 2 个事物的值?

问题描述

因此,我一直在尝试使用 pandas 创建一个 DataFrame,它报告从事需要大学学位('college_jobs')和不需要大学学位('non_college_jobs')的工作的毕业生人数。注意:我正在处理的数据框的名称是recent_grads

我尝试了以下代码:

df1 = recent_grads.groupby(['major_category']).college_jobs.non_college_jobs.sum() 

或者

df1 = recent_grads.groupby(['major_category']).recent_grads['college_jobs','non_college_jobs'].sum()

或者

df1 = recent_grads.groupby(['major_category']).recent_grads['college_jobs'],['non_college_jobs'].sum()

他们都没有工作!我应该做些什么?有人可以给我一个简单的解释吗?我一直在尝试通读 pandas 文档,但没有找到想要的解释。

这是数据框的头部:

   rank  major_code                                      major major_category  \
0     1        2419                      PETROLEUM ENGINEERING    Engineering   
1     2        2416             MINING AND MINERAL ENGINEERING    Engineering   
2     3        2415                  METALLURGICAL ENGINEERING    Engineering   
3     4        2417  NAVAL ARCHITECTURE AND MARINE ENGINEERING    Engineering   
4     5        2405                       CHEMICAL ENGINEERING    Engineering   

   total  sample_size    men  women  sharewomen  employed      ...        \
0   2339           36   2057    282    0.120564      1976      ...         
1    756            7    679     77    0.101852       640      ...         
2    856            3    725    131    0.153037       648      ...         
3   1258           16   1123    135    0.107313       758      ...         
4  32260          289  21239  11021    0.341631     25694      ...         

   part_time  full_time_year_round  unemployed  unemployment_rate  median  \
0        270                  1207          37           0.018381  110000   
1        170                   388          85           0.117241   75000   
2        133                   340          16           0.024096   73000   
3        150                   692          40           0.050125   70000   
4       5180                 16697        1672           0.061098   65000   

   p25th   p75th college_jobs  non_college_jobs  low_wage_jobs  
0  95000  125000         1534               364            193  
1  55000   90000          350               257             50  
2  50000  105000          456               176              0  
3  43000   80000          529               102              0  
4  50000   75000        18314              4440            972  

[5 rows x 21 columns]

标签: pythonpandasdata-science

解决方案


您可以按您感兴趣的列过滤初始 DataFrame,然后执行 groupby 和 summation,如下所示:

recent_grads[['major_category', 'college_jobs', 'non_college_jobs']].groupby('major_category').sum()

相反,如果您不执行初始列过滤器然后对它执行 a .sum()recent_grads.groupby('major_category')它将应用于所有可能的数字列。


推荐阅读