[Py016] pandas concat 表格合并2

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)

concat可以一次合并多个表格,通过索引来合并的;

不像merge,可以通过on参数指定依据哪个列。

df1
Out[365]: 
    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
df2
Out[366]: 
    A   B   C   D
1  A1  B4  C4  D4
2  A4  B5  C5  D5
3  A2  B6  C6  D6
4  A7  B7  C7  D7
df3
Out[367]: 
     A    B    C    D
8   A0   B8   C8   D8
9   A2   B9   C9   D9
10  A4  B10  C10  D10
11  A8  B11  C11  D11
pd.concat([df1,df2,df3],axis=1)  # 注意一下合并前后各个dataframe的index
Out[369]: 
      A    B    C    D    A    B    C    D    A    B    C    D
0    A0   B0   C0   D0  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
1    A1   B1   C1   D1   A1   B4   C4   D4  NaN  NaN  NaN  NaN
2    A2   B2   C2   D2   A4   B5   C5   D5  NaN  NaN  NaN  NaN
3    A3   B3   C3   D3   A2   B6   C6   D6  NaN  NaN  NaN  NaN
4   NaN  NaN  NaN  NaN   A7   B7   C7   D7  NaN  NaN  NaN  NaN
8   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   A0   B8   C8   D8
9   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   A2   B9   C9   D9
10  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   A4  B10  C10  D10
11  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN   A8  B11  C11  D11

如果希望让三个dataframe都依据A列来合并的话,可以先对dataframe重建索引

pd.concat([df1.set_index('A'),df2.set_index('A'),df3.set_index('A')],axis=1,sort=False)
Out[371]: 
      B    C    D    B    C    D    B    C    D
A0   B0   C0   D0  NaN  NaN  NaN   B8   C8   D8
A1   B1   C1   D1   B4   C4   D4  NaN  NaN  NaN
A2   B2   C2   D2   B6   C6   D6   B9   C9   D9
A3   B3   C3   D3  NaN  NaN  NaN  NaN  NaN  NaN
A4  NaN  NaN  NaN   B5   C5   D5  B10  C10  D10
A7  NaN  NaN  NaN   B7   C7   D7  NaN  NaN  NaN
A8  NaN  NaN  NaN  NaN  NaN  NaN  B11  C11  D11

你可能感兴趣的:([Py016] pandas concat 表格合并2)