使用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 个回答
-
执行
left
合并,这将使用sku
column作为要加入的列: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