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'])

输出结果如下图:

Pandas 表连接(concat,merge,append)

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

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

Pandas 表连接(concat,merge,append)
result = pd.concat([df1,df2], axis = 1)

Pandas 表连接(concat,merge,append)

数据库形式的连接(join)

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

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

Pandas 表连接(concat,merge,append)
result = pd.concat([df1, df2], axis=1, join= 'outer')

Pandas 表连接(concat,merge,append)

纵向连接(axis=1)

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

Pandas 表连接(concat,merge,append)

增加区分表的来源(key)

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

Pandas 表连接(concat,merge,append)

指定对其列(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')

Pandas 表连接(concat,merge,append)
result = pd.merge(df1,df2,how='outer')

Pandas 表连接(concat,merge,append)

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 表示新增的索引不能重复

Pandas 表连接(concat,merge,append)

Original: https://blog.csdn.net/weixin_46969441/article/details/119575239
Author: 生产队的驴儿
Title: Pandas 表连接(concat,merge,append)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/741386/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球