Pandas 表连接(concat,merge,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. 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)

参数说明:

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

步骤:

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

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

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

横向连接(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])

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

数据库形式的连接(join)

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

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

在这里插入图片描述

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

在这里插入图片描述

纵向连接(axis=1)

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

在这里插入图片描述

增加区分表的来源(key)

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

在这里插入图片描述

指定对其列(join_axes)

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

注意:改命令已经在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)

参数含义:

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])
result = pd.merge(df1,df2,how='inner')

在这里插入图片描述

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

在这里插入图片描述

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值