2017-08-14 76 views
2

使用比较几个dataframes并返回比赛。如果我有一个看起来像这样的几个大熊猫dataframes:如何使用熊猫

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(加入)的加入在所有dataframes一个大的,然后只返回在所有三个数据框中找到的名称?

预期输出:

Name 
Neil 
Ben 

回答

4

如果你感兴趣的只是名字,你可以得到交点这样

pd.Series(list(set(df1.Name) & set(df2.Name) & set(df3.Name))) 

0 Neil 
1  Ben 
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 
+0

非常好,一如既往! – Vaishali