如何使用比较几个数据帧并使用pandas返回匹配

时间:2017-08-14 23:36:25

标签: python-3.x pandas dataframe concatenation

如果我有几个像这样的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

2 个答案:

答案 0 :(得分:4)

如果您只对名称感兴趣,可以像这样获得交集

private static void addData(Table b) throws Exception
{
    Font font = new Font(Color.BLACK);
    Cell cell = null;
    double value = 143.567;

    cell = new Cell(new Phrase(roundoffValue(value), font));
    cell.setHorizontalAlignment(Element.ALIGN_CENTER);
    table.addCell(cell);    
}

public static String roundoffValue(double value )
{
   return String.valueOf( new Float( Math.round(value)));
}

答案 1 :(得分:3)

您可以将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