本文摘自:http://pandas.pydata.org/pandas-docs/stable/merging.html
前提:
ide:
liuqian@ubuntu:~$ ipython
准備:
In [1]: import pandas as pd
In [2]: 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]) ...: In [3]: df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'], ...: 'B': ['B4', 'B5', 'B6', 'B7'], ...: 'C': ['C4', 'C5', 'C6', 'C7'], ...: 'D': ['D4', 'D5', 'D6', 'D7']}, ...: index=[4, 5, 6, 7]) ...: In [4]: df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'], ...: 'B': ['B8', 'B9', 'B10', 'B11'], ...: 'C': ['C8', 'C9', 'C10', 'C11'], ...: 'D': ['D8', 'D9', 'D10', 'D11']}, ...: index=[8, 9, 10, 11]) ...: In [4]: frames = [df1, df2, df3] In [5]: result = pd.concat(frames), 11]) ...: In [5]: frames = [df1, df2, df3] # 不要忘了
, 11]) ...: In [4]: frames = [df1, df2, df3] In [5]: result = pd.concat(frames)
語法:
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
實例1:
In [6]: result = pd.concat(frames) # 等價於 result = df1.append([df2, df3])
In [7]: result = pd.concat(frames, axis=1)
實例2:
In [8]: result = pd.concat(frames, keys=['x', 'y', 'z'])
In [9]: result = pd.concat(frames, keys=['x', 'y', 'z'], axis=1)
實例3:
In [10]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'], ...: 'D': ['D2', 'D3', 'D6', 'D7'], ...: 'F': ['F2', 'F3', 'F6', 'F7']}, ...: index=[2, 3, 6, 7]) ...:
In [11]: result = pd.concat([df1, df4], axis=1, join='inner')
In [12]: result = pd.concat([df1, df4], join='inner')
實例4:
In [13]: result = pd.concat([df1, df4], axis=1, join_axes=[df1.index])
In [14]: result = pd.concat([df1, df4], join_axes=[df1.columns])
實例5:
In [15]: result = pd.concat([df1, df4], ignore_index=True) # 等價於 df1.append(df4, ignore_index=True)
In [16]: result = pd.concat([df1, df4], axis=1, ignore_index=True)
總結:
1, axis=0, 對行操作 axis=1, 對列操作
2. join='outer', 連接各個數據 join='inner',只取各個數據的公共部分
3. join_axes=[df1.index], 保留與df1的行標簽一樣的數據,配合axis=1一起用
join_axes=[df1.columns],保留與df1的列標簽一樣的數據,不要添加axis=1
4. ignore_index=False, 保留原索引 ignore_index=True,忽略原索引並生成新索引
5. keys=['x', 'y', 'z'] 對組成的每個df重新添加個索引