为了账号安全,请及时绑定邮箱和手机立即绑定

Python:如何对两列进行分组?

Python:如何对两列进行分组?

守候你守候我 2022-01-05 10:28:47
我有一个数据框df,其中包含城市人口的工作和年龄信息df    User   City     Job             Age0    A      x    Unemployed         331    B      x     Student           182    C      x    Unemployed         273    D      y  Data Scientist       284    E      y    Unemployed         455    F      y     Student           18对于每个城市,我想计算失业率和年龄中位数。对于失业率,我做了以下工作## Count the people in each citycust = insDataRed.groupby(['City'])['User'].count() ## Number of people for each citycust = pd.DataFrame(cust)cust.columns=['nCust']cust['City']=cust.indexcust=cust.reset_index(drop=True)## Count the people unemployed in each cityunempl = df[df['Job'] == 'Unemployed']unempl = unempl.groupby(['City'])['Job'].count()unempl = pd.DataFrame(unempl)unempl.columns=['unempl']unempl['City']=unempl.indexunempl=unempl.reset_index(drop=True)# 1. Fraction of UnemploymentunRate = pd.merge(unempl, cust, on = 'City')unRate['rate'] =(unRate['unempl']/unRate['nCust'])*100有没有更优雅的解决方案?如何计算每个城市的年龄中值?
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

如果您只想按城市执行此操作:


df.groupby(by='City').median()


如果您想同时按城市和工作分组:


df.groupby(by=['City', 'Job']).median()


获取每个城市的失业率:


import pandas as pd


df = pd.DataFrame({

    'User': ['A', 'B', 'C', 'D', 'E', 'F'], 'City': ['x', 'x', 'x', 'y', 'y', 'y'], 

    'Job': ['Unemployed', 'Student', 'Unemployed', 'Data Scientist', 'Unemployed', 'Student'],

    'Age':[33, 18, 27, 28, 45, 18],

})


df['count'] = 1

unmpl = df.groupby(by=['City', 'Job'])['count'].sum().reset_index()


unmpl_by_city = unmpl[unmpl['Job'] == 'Unemployed'].reset_index(drop=True)

count_by_city = df.groupby(by=['City'])['count'].sum().reset_index(drop=True)


frac_by_city = (unmpl_by_city['count'] * 100.0 / 

                count_by_city)


unmpl_by_city['frac'] = frac_by_city

unmpl_by_city


查看完整回答
反对 回复 2022-01-05
  • 1 回答
  • 0 关注
  • 299 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号