gpt4 book ai didi

python - 在 Pandas 中使用 join 进行 vlookup

转载 作者:IT老高 更新时间:2023-10-28 21:51:10 25 4
gpt4 key购买 nike

我有以下 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 合并,这将使用 sku 列作为要加入的列:

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 的索引,那么实际上它变成了一个系列,然后代码简化为:

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

关于python - 在 Pandas 中使用 join 进行 vlookup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25493625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com