2014-02-17 63 views
0

結合數據我有兩個DataFrames:與重疊

data = {'First': ['Tom', 'Peter', 'Phil'], 'Last': ['Dwan', 'Laak', 'Ivey'], 
     'Score': [101.5, 99, 105]} 
df = pd.DataFrame(data, index=list('abc')) 
print df 

    First Last Score 
a Tom Dwan 101.5 
b Peter Laak 99.0 
c Phil Ivey 105.0 


data2 = {'First': ['Tom', 'Phil'], 'Last': ['Dwan', 'Ivey'], 'Score': [103.5, 101]} 
df2 = pd.DataFrame(data2, index=list('fg')) 
print df2 

    First Last Score 
f Tom Dwan 103.5 
g Phil Ivey 101.0 

我想將它們合併它們重疊,對於最終結果:

First Last Score Score_new 
a Tom Dwan 101.5  103.5 
b Peter Laak 99.0  NaN 
c Phil Ivey 105.0  101.0 

因爲索引將不會匹配它必須加入上FirstLast列。請提出建議?

回答

3

如果你不關心保留指數,你可以不喜歡

>>> df.merge(df2, on=["First", "Last"], how='outer', suffixes=('', '_new')) 
    First Last Score Score_new 
0 Tom Dwan 101.5  103.5 
1 Peter Laak 99.0  NaN 
2 Phil Ivey 105.0  101.0 

[3 rows x 4 columns] 

如果這樣做,也許你可以用left/right_index玩,像

>>> df.merge(df2, on=["First", "Last"], how='outer', suffixes=('', '_new'), right_index=True) 
    First Last Score Score_new 
a Tom Dwan 101.5  103.5 
b Peter Laak 99.0  NaN 
c Phil Ivey 105.0  101.0 

[3 rows x 4 columns] 

,但我不知道爲什麼這些信件會很重要。

+0

非常感謝上百萬,它完美地解決了有問題的問題。儘管如此,我還有一個額外的問題,你能想出一種合併特定列的方法嗎?例如,如果我的'df2'有另一個列,比如說'Mean',合併時,所有列('Score'和'Mean')都會附加到原始數據幀'df'。如果我們只想要列「Score」進行合併,該怎麼辦? – nutship