簡體   English   中英

在Pandas Vlookup - 加入還是合並?

[英]Vlookup in Pandas - Join or Merge?

我正在嘗試使用pandas復制Vlookup Excel功能。 我使用了Join和Merge,這兩種方法都給我錯誤的結果。

Df1有15列,帶有整數和文本值,Df2有6列,主要是文本。

我試圖使用列標簽'Created By'將用戶詳細信息從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')

有人指出這篇文章的答案: 熊貓合並101

但我仍然沒有得到正確的結果。 “CreatedBy”字段未填充Df1中的所有用戶。 該字段是文本和數字的混合,例如:User1,User2等。我想知道數據類型是否干擾了結果。

這不能讓你得到你想做的合並嗎? 我不確定為什么你有角色的空列和用戶下的所有內容,但你可以重命名列。

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

編輯:對不起,一些問題是剪貼板解析。 邏輯適用。 如果您仍然遇到問題,可否提供未正確連接的“線路”示例?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM