pandas 笔记:合并操作

Posted UQI-LIUWJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas 笔记:合并操作相关的知识,希望对你有一定的参考价值。

1 concat

将数据根据不同的轴进行简单的融合

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

1.1 主要参数说明

objsseries,dataframe构成的序列lsit 
axis

需要合并链接的轴,

0是行(a[...][0] 和 b[...][0]合并,a[...][1] 和 b[...][1]合并)

1是列(a[0][...] 和 b[0][...]合并,a[1][...] 和 b[1][...]合并)

join

连接的方式 inner,或者outer

如果为'inner'得到的是两表的交集,如果是outer,得到的是两表的并集

key识别数据源自于哪张表
ignore_index设置为true之后,合并的两个表就会根据列字段对齐,然后合并。最后再重新整理一个新的index

1.2 axis

需要合并链接的轴,

lst1=[['a0','b0','c0','d0'],
     ['a1','b1','c1','d1'],
     ['a2','b2','c2','d2'],
     ['a3','b3','c3','d3']]
lst2=[['a4','b4','c4','d4'],
     ['a5','b5','c5','d5'],
     ['a6','b6','c6','d6'],
     ['a7','b7','c7','d7']]
lst3=[['a8','b8','c8','d8'],
     ['a9','b9','c9','d9'],
     ['a10','b10','c10','d10'],
     ['a11','b11','c11','d11']]
df1=pd.DataFrame(lst1)
df2=pd.DataFrame(lst2)
df3=pd.DataFrame(lst3)

0是行(a[...][0] 和 b[...][0]合并,a[...][1] 和 b[...][1]合并)【默认】

pd.concat([df1,df2,df3],axis=0)

 

1是列(a[0][...] 和 b[0][...]合并,a[1][...] 和 b[1][...]合并)

pd.concat([df1,df2,df3],axis=1)

1.3 key

识别数据源自于哪张表

 依旧是1.2的数据

pd.concat([df1,df2,df3],axis=0,keys=['df1','df2','df3'])

 

pd.concat([df1,df2,df3],axis=1,keys=['df1','df2','df3'])

 1.3.1 也可以传入字典来增加分组键 

lst1=[['a0','b0','c0','d0'],
     ['a1','b1','c1','d1'],
     ['a2','b2','c2','d2'],
     ['a3','b3','c3','d3']]
lst2=[['a4','b4','c4','d4'],
     ['a5','b5','c5','d5'],
     ['a6','b6','c6','d6'],
     ['a7','b7','c7','d7']]
df1=pd.DataFrame(lst1)
df2=pd.DataFrame(lst2)
pd.concat({'df1':df1,'df2':df2})

 1.4 join

连接的方式 inner,或者outer

如果为'inner'得到的是两表的交集,如果是outer,得到的是两表的并集【默认outer】

lst1=[['a0','b0','c0','d0'],
     ['a1','b1','c1','d1'],
     ['a2','b2','c2','d2'],
     ['a3','b3','c3','d3']]
lst2=[['a4','b4','c4','d4'],
     ['a5','b5','c5','d5'],
     ['a6','b6','c6','d6'],
     ['a7','b7','c7','d7']]
df1=pd.DataFrame(lst1,columns=['A','B','C','D'])
df2=pd.DataFrame(lst2,columns=['A','B','E','F'])
pd.concat([df1,df2],axis=0,join='inner')

 

pd.concat([df1,df2],axis=0,join='outer')

 

1.5 ignore_index 

设置为true之后,合并的两个表就会根据列字段对齐,然后合并。最后再重新整理一个新的index

lst1=[['a0','b0','c0','d0'],
     ['a1','b1','c1','d1'],
     ['a2','b2','c2','d2'],
     ['a3','b3','c3','d3']]
lst2=[['a4','b4','c4','d4'],
     ['a5','b5','c5','d5'],
     ['a6','b6','c6','d6'],
     ['a7','b7','c7','d7']]
df1=pd.DataFrame(lst1)
df2=pd.DataFrame(lst2)
pd.concat([df1,df2],axis=0)

 

pd.concat([df1,df2],axis=0,ignore_index=True)

 

2 append

默认沿着列进行拼接

 result = df1.append(s2, ignore_index=True)

以上是关于pandas 笔记:合并操作的主要内容,如果未能解决你的问题,请参考以下文章

合并 pandas 中的两个数据框,给出“内核似乎已经死机。它将自动重启。”使用 Jupyter 笔记本

pandas基础(part4)--排序/分组/合并

数据分析之Pandas合并操作总结

Pandas学习笔记02- 数据处理高阶用法

学习笔记:python3,代码片段(2017)

pandas合并/连接