【发布时间】:2019-11-04 14:10:00
【问题描述】:
我正在尝试使用 pandas 复制 Vlookup Excel 函数。我使用了 Join 和 Merge,这两种方法都给出了错误的结果。
Df1 有 15 列,包含整数和文本值,而 Df2 有 6 列,主要包含文本。
我正在尝试使用列标签“创建者”将用户详细信息从 Df2 带入 Df1。
Df1 看起来像这样:
CA# CreatedBy $
9xxx12 User 1 10
9xxx13 User 2 20
9xxx14 User 3 25
Df2 看起来像这样:
CreatedBy Role
User 1 Sales
User 2 Maintenance
User 3 Operations
我的预期结果是: DfMerged
CA# CreatedBy $ User Role
9xxx12 User 1 10 Sales
9xxx13 User 2 20 Maintenance
9xxx14 User 3 25 Operations
我尝试了以下代码变体,但当 Df2 中有匹配的数据时,它们与所有用户 ID 不匹配,在 Df1 中留下一些空白。
merged= data_fr1.merge(data_fr2, on=['Created By'], how='left')
merged2= pd.merge(data_fr1, data_fr2, left_on='Created By',
right_on='Created By', how='left')
有人指向此帖子寻求答案:Pandas Merging 101
但我仍然没有得到正确的结果。没有为 Df1 中的所有用户填充“CreatedBy”字段。该字段是文本和数字的混合,例如:User1、User2 等。我想知道数据类型是否干扰了结果。
【问题讨论】:
-
我阅读了这篇文章并尝试了一些解决方案,最接近我的问题的解决方案涉及使用 pd.merge(df2, on='key', how='left') 但我仍然看到错误.