使用join在Pandas中使用vlookup

发布于 2021-01-29 15:25:58

我有以下2个数据框

Example1
sku loc flag  
122  61 True 
123  61 True
113  62 True 
122  62 True 
123  62 False
122  63 False
301  63 True

Example2 
sku dept 
113 a
122 b
123 b
301 c

我想执行合并,或使用Pandas(或最佳的Python运算符)加入运算,以产生以下数据框。

Example3
sku loc flag   dept  
122  61 True   b
123  61 True   b
113  62 True   a
122  62 True   b
123  62 False  b
122  63 False  b
301  63 True   c

Both 
df_Example1.join(df_Example2,lsuffix='_ProdHier')
df_Example1.join(df_Example2,how='outer',lsuffix='_ProdHier')

不工作 我究竟做错了什么?

关注者
0
被浏览
44
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    执行left合并,这将使用skucolumn作为要加入的列:

    In [26]:
    
    df.merge(df1, on='sku', how='left')
    Out[26]:
       sku  loc   flag dept
    0  122   61   True    b
    1  122   62   True    b
    2  122   63  False    b
    3  123   61   True    b
    4  123   62  False    b
    5  113   62   True    a
    6  301   63   True    c
    

    如果sku实际上是您的索引,请执行以下操作:

    In [28]:
    
    df.merge(df1, left_index=True, right_index=True, how='left')
    Out[28]:
         loc   flag dept
    sku                 
    113   62   True    a
    122   61   True    b
    122   62   True    b
    122   63  False    b
    123   61   True    b
    123   62  False    b
    301   63   True    c
    

    另一种方法是使用map,如果您将其设置sku为第二个df的索引,那么实际上它变成了Series,则代码简化为:

    In [19]:
    
    df['dept']=df.sku.map(df1.dept)
    df
    Out[19]:
       sku  loc   flag dept
    0  122   61   True    b
    1  123   61   True    b
    2  113   62   True    a
    3  122   62   True    b
    4  123   62  False    b
    5  122   63  False    b
    6  301   63   True    c
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看