Boo*_*d16 3 match vlookup dataframe pandas
我有两个带有多列的数据框。
我想比较 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
Run Code Online (Sandbox Code Playgroud)
输出:
newdf
pcd brand
1 eusjk nike
2 psosk ferrari
Run Code Online (Sandbox Code Playgroud)
我的尝试,但列上的长度不匹配
newdf = (df2['postcode'] == df1).all(axis=1).astype(int)
Run Code Online (Sandbox Code Playgroud)
我需要使用某种循环功能吗?
您可以执行内部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
Run Code Online (Sandbox Code Playgroud)
然后,您可以删除“邮政编码”列或先重命名它:
In [136]:
df1.rename(columns={'postcode':'pcd'}).merge(df2)
Out[136]:
pcd brand
0 eusjk nike
1 psosk ferrari
Run Code Online (Sandbox Code Playgroud)