当前位置: 首页 > 面试题库 >

使用join在Pandas中使用vlookup

查学文
2023-03-14
问题内容

我有以下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')

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


问题答案:

执行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


 类似资料:
  • 我有两个表,喜欢用另一个表的值更新其中一个表。 我已经尝试过这些查询,但SQLite不支持使用UPDATE进行连接。任何人都可以提出查询。谢谢您的帮助。

  • Join(string,interface{},string) 第一个参数为连接类型,当前支持INNER, LEFT OUTER, CROSS中的一个值, 第二个参数为string类型的表名,表对应的结构体指针或者为两个值的[]string,表示表名和别名, 第三个参数为连接条件。 以下将通过示例来讲解具体的用法: 假如我们拥有两个表user和group,每个User只在一个Group中,那么我们

  • 问题内容: 如何在编写SQL查询的Linq中使用左联接? 问题答案: 使用Join关键字而不是Left join,并且必须使用“ INTO”关键字和“ DefaultIfEmpty()”方法,因为右表将返回空值。

  • 这是正确的吗?如果有,为什么会有?

  • 问题内容: 我感觉好像总是被教导要使用s,并且我经常看到它们与s 混合使用,以在应该在不同页面上执行相同操作的几段代码中完成相同类型的查询。开始: 那就是我正在从事的工作: 我看到很多像: 似乎LEFT也可能是INNER,有没有抓住的机会? 问题答案: 有收获吗?是的-左联接是外联接的一种形式,而内联接是内联接的一种形式。 这是显示差异的示例。我们将从基本数据开始: 在这里,我们将看到内部联接和左

  • 问题内容: 我想在MySQL中为我们转换一下: MySQL不喜欢FROM部分,而且我不确定INNER JOINs是否能像编写的那样工作。 问题答案:

  • 问题内容: 我有 我想为每个运行一些,所以所需的输出如下所示: 这是我尝试的: 和 这是我得到的错误: 问题答案: 您可以调用并传递函数以将该列添加到df中: 关于错误,您无法调用Series groupby对象,其次,您将列名作为无意义的列表传递。 所以这有效:

  • 问题内容: 我希望在python3中以有效的方式使用该功能。我拥有的代码可以完成任务,但是速度太慢,因为我正在处理大型数据集。因此,只要有折衷,我的工作重点就是效率而不是优雅。这是我想做的玩具: 这使 如我所愿,但是花费的时间太长了。最快的方法是什么? 编辑:这是比该问题更集中和明确的问题,其解决方案与此类似。 问题答案: 用于执行查找: 为了避免没有有效密钥的情况,您可以通过 您还可以使用回答有