2017-08-14 73 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