在熊猫中的Vlookup-加入还是合并?

时间:2019-06-21 17:48:58

标签: python pandas dataframe

我正在尝试使用熊猫复制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等。我想知道数据类型是否干扰结果。

1 个答案:

答案 0 :(得分:0)

这不是让您想要合并吗?我不确定为什么角色的空列以及用户下的所有内容都为空,但是您可以重命名列。

print('df')
print(df)
print('df2')
print(df2)
print('out_df')
print(out_df)

df.merge(df2[['By', 'Role']], on='By')
df
      CA# Created  By   $
0  9xxx12    User   1  10
1  9xxx13    User   2  20
2  9xxx14    User   3  25
df2
  Created  By         Role
0    User   1        Sales
1    User   2  Maintenance
2    User   3   Operations
out_df
      CA# Created  By   $         User  Role
0  9xxx12    User   1  10        Sales   NaN
1  9xxx13    User   2  20  Maintenance   NaN
2  9xxx14    User   3  25   Operations   NaN
Out[40]: 
      CA# Created  By   $         Role
0  9xxx12    User   1  10        Sales
1  9xxx13    User   2  20  Maintenance
2  9xxx14    User   3  25   Operations

编辑:对不起,某些问题是剪贴板解析。逻辑适用。如果您仍然遇到问题,能否提供一些示例,这些示例“线”连接不正确?