[Py016] pandas concat 表格合并2
2018-10-31 本文已影响43人
安哥生个信
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