python - 使用 pandas 系列为 df 定义一个函数
问题描述
我想计算属于某个工作组(FAP 列)的部门(ROME 列)的人数(数据框变量)除以该工作组中的总人数。
工作组的总数存储在变量 Total_FAP 中:
Total_FAP = df2.Total
Total_FAP.head()
这表明
FAP
Agents administratifs et commerciaux des transports et du tourisme 63160.0
Agents d'entretien 718150.0
Agents d'exploitation des transports 142680.0
Agents de gardiennage et de sécurité 465010.0
Agriculteurs, éleveurs, sylviculteurs, bûcherons 121040.0
例如,对于 2010 年,我必须将 ROME A1101 对应于 FAP “Agriculteurs, éleveurs, sylviculteurs, bûcherons”(即 2630)的人数除以 pandas 的总数系列(即 121040)。它会像这样:2630/121040 = 0.02172835426
我想知道是否有办法制作函数,因为我想尝试对数据框进行迭代,但我看到不建议这样做......
谢谢你的帮助
编辑:这是 DF1 的原始数据
{'FAP': {0: 'Agriculteurs, éleveurs, sylviculteurs, bûcherons',
1: 'Agriculteurs, éleveurs, sylviculteurs, bûcherons',
2: 'Agriculteurs, éleveurs, sylviculteurs, bûcherons',
3: 'Agriculteurs, éleveurs, sylviculteurs, bûcherons',
4: 'Agriculteurs, éleveurs, sylviculteurs, bûcherons'},
'ROME': {0: 'A1101', 1: 'A1201', 2: 'A1202', 3: 'A1203', 4: 'A1204'},
'2010': {0: 2630, 1: 1380, 2: 4450, 3: 20330, 4: 130},
'2011': {0: 2790, 1: 1500, 2: 3670, 3: 20040, 4: 90},
'2012': {0: 2700, 1: 1320, 2: 4020, 3: 19130, 4: 130},
'2013': {0: 2970, 1: 1690, 2: 3520, 3: 20500, 4: 140},
'2014': {0: 2680, 1: 1980, 2: 2790, 3: 16900, 4: 150},
'2015': {0: 2440, 1: 1780, 2: 2640, 3: 16310, 4: 170},
'2016': {0: 3600, 1: 1980, 2: 2540, 3: 17680, 4: 90},
'2017': {0: 2930, 1: 2470, 2: 2510, 3: 18520, 4: 130},
'2018': {0: 2740, 1: 2010, 2: 2130, 3: 19280, 4: 150},
'2019': {0: 1600.0, 1: 1760.0, 2: 1050.0, 3: 14260.0, 4: 80.0},
'2020': {0: 11140, 1: 6490, 2: 14000, 3: 76570, 4: 510},
'1e Trimestre 2021': {0: 600, 1: 560, 2: 300, 3: 6090, 4: 30}}
解决方案
你可以使用:
cols = df.filter(regex='^\d{4}$').columns
df = df.merge(Total_FAP, left_on='FAP', right_index=True, suffixes=('', '_total'))
df[cols].div(df['FAP_total'], axis=0)
输出:
2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020
0 0.021728 0.023050 0.022307 0.024537 0.022141 0.020159 0.029742 0.024207 0.022637 0.013219 0.092036
1 0.011401 0.012393 0.010905 0.013962 0.016358 0.014706 0.016358 0.020406 0.016606 0.014541 0.053619
2 0.036765 0.030321 0.033212 0.029081 0.023050 0.021811 0.020985 0.020737 0.017597 0.008675 0.115664
3 0.167961 0.165565 0.158047 0.169365 0.139623 0.134749 0.146067 0.153007 0.159286 0.117812 0.632601
4 0.001074 0.000744 0.001074 0.001157 0.001239 0.001404 0.000744 0.001074 0.001239 0.000661 0.004213
推荐阅读
- java - 用于 BGP 排名的 java Api
- python - Sympy中点(x,y)wrt符号'x'的导数
- ansible - Ansible VMware - 任何模块或方法都可以搜索 vm 文件夹并返回其 VM 来宾列表?
- c# - 如何解决错误 ApplicationRole “不包含带参数 1. [DbInitialize] 的构造函数?
- arrays - 如何传入 bash 变量并使用 jq 生成动态 JSON?
- javascript - 如何在查看器中添加多个模型?
- javascript - Ember 组件 POST 到 Express API 给出错误
- sql-server - 是否可以专门为 grafana 仪表板用户获取数据?
- c++ - 如何用常量成员值初始化数组成员?
- android - 带有 CoordinatorLayout 的 Recylerview 未在正确位置对齐