【问题标题】:How to use compare several dataframes and return the matches using pandas如何使用比较多个数据框并使用熊猫返回匹配项
【发布时间】:2018-01-22 21:12:01
【问题描述】:

如果我有几个看起来像这样的 pandas 数据框:

Name       Score
Sam        4
Aaron      5
Neil       6
Ben        7

Name       Score
Morgan     5
Neil       6
Adam       8
Ben        5

Name       Score
Evan       5
Nathan     4
Neil       6
Ben        2

如何使用 pandas.concat(join) 将所有数据帧合并为一个大数据帧,然后只返回在所有三个数据帧中找到的名称?

预期输出:

Name
Neil
Ben

【问题讨论】:

    标签: python-3.x pandas dataframe concatenation


    【解决方案1】:

    如果你只对名字感兴趣,你可以像这样得到交集

    pd.Series(list(set(df1.Name) & set(df2.Name) & set(df3.Name)))
    
    0    Neil
    1     Ben
    

    【讨论】:

      【解决方案2】:

      您可以将pd.concat与参数join='inner'一起使用

      pd.concat([d1, d2, d3], axis=1, join='inner')
      
            Score  Score  Score
      Name                     
      Neil      6      6      6
      Ben       7      5      2
      

      如果需要区分列,可以传递keys参数

      pd.concat(
          [d.Score for d in [d1, d2, d3]],
          axis=1, join='inner', keys=['d1', 'd2', 'd3']
      )
      
            d1  d2  d3
      Name            
      Neil   6   6   6
      Ben    7   5   2
      

      【讨论】:

      • 非常好,一如既往!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多