【问题标题】:Pandas: compare two columns and return matched rows熊猫:比较两列并返回匹配的行
【发布时间】:2015-11-30 18:42:42
【问题描述】:

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

我想比较 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)

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

【问题讨论】:

    标签: pandas match dataframe vlookup


    【解决方案1】:

    你可以执行一个内部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
    

    【讨论】:

    • 完成了这项工作。我还是不明白为什么他们会称之为“合并”,不应该称之为“融合”吗?
    • 您正在合并列/索引,您可以指定合并 lhs 和 rhs 的条件,如果有匹配的列名,那么它将匹配这些并且默认的合并类型是内部所以只有两边都存在的值
    • @Boosted_d16 不要出汗,如果不是食物、金钱或健康,那都不重要。我似乎每隔几周就会随机投票一次
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2018-01-22
    相关资源
    最近更新 更多