【问题标题】:Applying function on merge在合并上应用功能
【发布时间】:2018-04-11 20:27:39
【问题描述】:

我有两个数据框。片段粘贴在下面

员工

项目

两个数据框都有共同的列“级别”和“技能”,我需要将员工数据框的“员工ID”列合并到项目数据框。但问题是我需要将那些 EmployeeID 添加到 CostToCompany 最低的项目中。我该怎么做?

【问题讨论】:

    标签: python-3.x pandas merge min concat


    【解决方案1】:

    您可以,drop_duplicates选择最低成本的一项

    Employee=Employee.sort_values(['Level','skill','CostToCompany']).drop_duplicates(['Level','skill','Rating'],keep='first')
    

    那么,

    Project1=pd.merge(Project,Employee['Level','skill','Employee ID'].on='cols')
    

    或者你可以使用你的结果做:

    Project1.sort_values(['Level','skill','CostToCompany']).drop_duplicates(['Level','skill','Rating'],keep='first')
    

    【讨论】:

    • 我的项目数据框有 10 行。所以最终在合并时我应该有 10 行,但我得到了 20 行。同样的技能和级别集也重复使用不同的 EmployeeID
    • Project1=pd.merge(Project,Employee['Level','skill','Rating'].on='cols',how='left'),请确保您删除重复的内容,就像我在第一行所做的那样
    • 我认为我不应该在 drop_duplicates 上使用“评级”。然后它给了我 10 行
    • @Biswa 是的,你是对的,没有数据很难写代码,所以下次请不要显示图片~:-)
    • 谢谢老兄。会注意到这一点。您的代码有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 2020-11-22
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2023-03-18
    • 2018-08-13
    相关资源
    最近更新 更多