pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示

一、pd.concat实现数据合并

  • pd.concat([data1, data2], axis=1):按照行或列进行合并,axis=0为列索引,axis=1为行索引

代码如下

import pandas as pd
import numpy as np
# 数据生成代码
num = np.random.randint(50, 100, (3, 5))
# 传入标签索引
column = ['语文', '数学', '英语', '物理', '政治']   # 列标签索引
# ind = ['name1', 'name2', 'name3']    # 行标签索引
ind = ['name' + str(i) for i in range(num.shape[0])]   # 行标签索引,num.shape[0]即获取num数组的行号,此处为3
data3 = pd.DataFrame(num, columns=column, index=ind)
data3
-----------------------------------------------------------------------------------
import pandas as pd
import numpy as np
# 数据生成代码
num = np.random.randint(50, 100, (5, 5))
# 传入标签索引
column = ['化学', '生物', '历史', '地理', '语文']   # 列标签索引
ind = ['name' + str(i) for i in range(num.shape[0])]   # 行标签索引,num.shape[0]即获取num数组的行号,此处为5
data4 = pd.DataFrame(num, columns=column, index=ind)
data4
-----------------------------------------------------------------------------------
pd.concat([data3, data4], axis=1)   # 按行索引合并

pd.concat([data3, data4], axis=0)   # 按列索引合并

pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示_第1张图片

pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示_第2张图片

pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示_第3张图片

pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示_第4张图片

 二、pd.merge链接

  • pd.merge(left, right, how='inner', on=None):可以指定按照两组数据的共同键值对合并或者左右各自合并
    • left:DataFrame
    • right:另一个DataFrame
    • on:指定的共同键,连接的依据
    • how:按照什么方式连接
合并方法 SQL 连接名称 描述
left LEFT OUTER JOIN 仅使用来自左框架的键
right RIGHT OUTER JOIN 仅使用来自右框架的键
outer FULL OUTER JOIN 使用来自两个框架的键的并集
inner INNER JOIN 使用来自两个框架的键的交集 

数据准备

left = pd.DataFrame({'name': ['YX', 'XY', 'XX', 'YY'],
                        'age': ['18', '18', '22', '19'],
                        'A': ['A0', 'A1', 'A2', 'A3'],
                        'B': ['B0', 'B1', 'B2', 'B3']})
left
------------------------------------------------------------
right = pd.DataFrame({'name': ['YX', 'XY', 'XX', 'yx'],
                        'age': ['18', '20', '22', '19'],
                        'C': ['C0', 'C1', 'C2', 'C3'],
                        'D': ['D0', 'D1', 'D2', 'D3']})
right

pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示_第5张图片

pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示_第6张图片

2.1 inner内连接

result = pd.merge(left, right, on=['name', 'age'])   # 默认inner内连接
result

pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示_第7张图片

2.2 left左连接

pd.merge(left, right, how='left', on=['name', 'age'])   # 左连接

pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示_第8张图片

 2.3 right右连接

pd.merge(left, right, how='right', on=['name', 'age'])   # 右连接

pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示_第9张图片

2.4 outer外连接

pd.merge(left, right, how='outer', on=['name', 'age'])  # 外连接

pandas中pd.concat(data, axis=1)数据合并与pd.merge(left, right, how=,on=)的内连接、左连接、右连接和外连接代码演示_第10张图片

 http://xqnav.top/

你可能感兴趣的:(pandas,python,开发语言,pandas,数据分析)