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重新添加個索引


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM