我正在尝试使用熊猫复制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等。我想知道数据类型是否干扰结果。
答案 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
编辑:对不起,某些问题是剪贴板解析。逻辑适用。如果您仍然遇到问题,能否提供一些示例,这些示例“线”连接不正确?