通过索引和列连接两个DataFrame

时间:2019-07-05 10:16:20

标签: python pandas

我正在尝试按索引将两个DataFrames连接在一起,这些索引可以包含相同的列,并且我只想在该特定值是NaN或不存在的情况下将一个添加到另一个。我以熊猫为例,所以我得到了:

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'C': ['C0', 'C1', 'C2', 'C3'],
                    'D': ['D0', 'D1', 'D2', 'D3']},
                    index=[0, 1, 2, 3])

    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3

df4 = pd.DataFrame({'B': ['B2p', 'B3p', 'B6p', 'B7p'],
                    'D': ['D2p', 'D3p', 'D6p', 'D7p'],
                    'F': ['F2p', 'F3p', 'F6p', 'F7p']},
                    index=[2, 3, 6, 7])

    B    D    F
2  B2p  D2p  F2p
3  B3p  D3p  F3p
6  B6p  D6p  F6p
7  B7p  D7p  F7p

,搜索结果是:

    A    B   C    D   F
0  A0   B0  C0   D0  Nan
1  A1   B1  C1   D1  Nan 
2  A2   B2  C2   D2  F2p
3  A3   B3  C3   D3  F3p
6 Nan  B6p Nan  D6p  F6p
7 Nan  B7p Nan  D7p  F7p

1 个答案:

答案 0 :(得分:4)

这是combine_first的一个好用例,其中结果数据帧的行索引和列索引将是两者的并集,即,在其中一个数据帧中没有索引的情况下,使用另一个(与包含NaN的行为相同:

df1.combine_first(df4)

    A    B    C    D    F
0   A0   B0   C0   D0  NaN
1   A1   B1   C1   D1  NaN
2   A2   B2   C2   D2  F2p
3   A3   B3   C3   D3  F3p
6  NaN  B6p  NaN  D6p  F6p
7  NaN  B7p  NaN  D7p  F7p