我有两个包含多列的数据帧。
我想比较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)
我是否需要使用某种循环功能?
答案 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