pandas 之 concat

本文摘自: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重新添加个索引

posted on 2017-06-16 10:12  刘[小]倩  阅读(4868)  评论(1编辑  收藏  举报

导航