当前位置:   article > 正文

Pandas 表连接(concat,merge,append)_pd.append

pd.append

Pandas 表连接(concat,merge,append)

## 1.pd.concat([left,right],axis=1)
## 2.pd.merge(left,right,how='inner')
## 3.pad.append( line, ignore_index=True)
  • 1
  • 2
  • 3

1. pd.concat()

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

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
  • 2
  • 3
  • 4
  • 5
  • 6

参数说明:

objs: series,dataframe 或者是panel构成的序列list
axis: 需要合并链接的轴,0是行,1是列
join: 连接的方式 inner,或者outer
其他一些参数不常用,用的时候再补上说明。

步骤:

  1. 将表构成 list,然后作为concat输入
  2. 为了 区分表,可以增加关键词
frames = [df1, df2, df3]

 result = pd.concat(frames)
  • 1
  • 2
  • 3
result = pd.concat(frames, keys=['x', 'y', 'z'])
  • 1

输出结果如下图:
在这里插入图片描述

横向连接(axis=1)

当axis = 1的时候,concat就是行对齐,然后将不同列名称的两张表合并

举例子

import pandas as pd
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])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

df2 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
                     'D': ['D2', 'D3', 'D6', 'D7'],
                     'F': ['F2', 'F3', 'F6', 'F7']},
                     index = [2, 3, 6, 7])
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

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

在这里插入图片描述

数据库形式的连接(join)

join参数的属性:
如果为 inner 得到的是两表的交集;
如果是outer,得到的是两表的并集。

result = pd.concat([df1, df2], axis=1, join= 'inner')
  • 1

在这里插入图片描述

result = pd.concat([df1, df2], axis=1, join= 'outer')
  • 1

在这里插入图片描述

纵向连接(axis=1)

result = pd.concat([df1,df2], axis = 0)
  • 1

在这里插入图片描述

增加区分表的来源(key)

result = pd.concat([df1,df2],axis=1, key = ('a','b'))
  • 1

在这里插入图片描述

指定对其列(join_axes)

result = pd.concat([df1,df2], axis=1, join_axis = [df1.index])
  • 1

注意:改命令已经在pandas1.0版本以上取消了,只适用于1.0版本以下

2. pd.merge()

pd.merge(left, right, how='inner', 
			on=None, left_on=None, right_on=None,
         left_index=False, right_index=False,
         sort=True,
         suffixes=('_x', '_y'), copy=True, indicator=False)
  • 1
  • 2
  • 3
  • 4
  • 5

参数含义:

left:左数据表
right:右数据表
on:以哪一列为标准做联表,如果没有输入参数,则会以共有的索引作为依据
left_on:以左边的数据框作为join key
right_on:以右边的数据框作为join key
left_index:以左边的索引作为join key
right_index:以右边的索引作为join key
how:left, right, out, inner,默认为inner
sort:通过join key对结果进行排序

例子:

import pandas as pd
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])
df2 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
                     'D': ['D2', 'D3', 'D6', 'D7'],
                     'F': ['F2', 'F3', 'F6', 'F7']},
                     index = [2, 3, 6, 7])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
result = pd.merge(df1,df2,how='inner')
  • 1

在这里插入图片描述

result = pd.merge(df1,df2,how='outer')
  • 1

在这里插入图片描述

3. 增加新的行数(pd.append)

s1 = pd.Series(['x0','x1','x2','x3'], index=['A','B','C','D'])
result5 = df1.append(s1,ignore_index=True)
  • 1
  • 2

ignore_index=True 表示新增的索引不能重复
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/69713?site
推荐阅读
相关标签
  

闽ICP备14008679号