2014-02-17 34 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