Pandas:比较两列并返回匹配的行

时间:2015-09-04 14:46:05

标签: pandas match dataframe vlookup

我有两个包含多列的数据帧。

我想比较df1 ['postcode']和df2 ['pcd']并根据这两列的匹配值构建一个新的df。

注意 - 我要匹配的两列的长度不一样。

df1
  postcode brand
1 znuee    soony 
2 eusjk    nike
3 zieum    addidas
4 psosk    ferrari

df2
  pcd      brand
1 dodkm    soony 
2 eusjk    nike
3 sjksj    addidas
4 psosk    ferrari

输出:

newdf
  pcd      brand
1 eusjk    nike
2 psosk    ferrari

我的尝试,但我在列

上得到了不匹配的长度
newdf = (df2['postcode'] == df1).all(axis=1).astype(int)

我是否需要使用某种循环功能?

1 个答案:

答案 0 :(得分:4)

您可以执行内部merge

In [134]:
df1.merge(df2, left_on=['postcode', 'brand'], right_on=['pcd', 'brand'])

Out[134]:
  postcode    brand    pcd
0    eusjk     nike  eusjk
1    psosk  ferrari  psosk

然后您可以删除邮政编码'列或首先重命名:

In [136]:

df1.rename(columns={'postcode':'pcd'}).merge(df2)
Out[136]:
     pcd    brand
0  eusjk     nike
1  psosk  ferrari