python - 根据条件合并数据框
问题描述
我有两个数据框,
a = {'SEX':[...], 'ENT':[...], 'XY':[...], 'RZD':[...], 'TOT':[...]}
有形状769, 5
和
b = {'K':[...], 'NOM':[...], 'M':[...], SEX':[...], 'ENT':[...], 'POB':[...], 'RZD':[...], '%A':[...], '%B':[...]}
与形状34398, 9
。
我需要基于 . 合并这些数据框'SEX', 'ENT', 'RZD'
。合并后,我会在值不匹配的地方填充零。最后,我计算了一个新列FINAL
,它等于a['%A'] * b['TOT']
下面的代码:
local = b.merge(a, on=['ENT', 'RZD', 'SEX'], how='left')
local.fillna(0, inplace=True)
local['TOT'] = local['%A'].mul(local['TOT']).round(0)
我遇到的问题是
x1 = a['TOT'].sum()
应该等于
x2 = local['TOT'].sum()
但是,我得到了将近 600 万的差异。这意味着x2 >> x1
您是否推荐任何合并这些数据框并保持一致性的方法?
您可以在此处找到原始文件。
解决方案
试试df.join,看看这个how
论点是否对你有帮助。该how
参数将提醒您匹配的位置,而不是按条件合并,您可以使用对列进行向量操作
if df["column"] == "left_only":
df["column"] = df["column"].str.replace("left_only", 0)
# repeat
推荐阅读
- php - 使用 php 下拉菜单调用函数
- java - WireMock:200 个存根工作,但未找到具有服务故障的存根
- google-apps-script - 使用 GAS batchUpdate 将数据从 Google 表格自定义表单上的特定单元格复制到同一电子表格中不同工作表上的特定行
- python - 转置矩阵 Python Pandas
- c# - C#调用具有默认实现的接口方法
- r - 绘制多个组的嵌套分类值的折线图 (ggplot2)
- c# - 遍历列表,但无法访问不同的项目值
- mysql - sql查询性能低
- android - 使用 FlexboxLayout 的浮动窗口的最大宽度大小是有限的
- google-apps-script - 有没有办法让电子邮件在没有 Google Apps 脚本过滤器的情况下跳过收件箱?