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)   # 按列索引合并

 二、pd.merge链接

  • pd.merge(left, right, how='inner', on=None):可以指定按照两组数据的共同键值对合并或者左右各自合并
    • left:DataFrame
    • right:另一个DataFrame
    • on:指定的共同键,连接的依据
    • how:按照什么方式连接
合并方法SQL 连接名称描述
leftLEFT OUTER JOIN仅使用来自左框架的键
rightRIGHT OUTER JOIN仅使用来自右框架的键
outerFULL OUTER JOIN使用来自两个框架的键的并集
innerINNER 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

2.1 inner内连接

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

2.2 left左连接

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

 2.3 right右连接

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

2.4 outer外连接

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

 http://xqnav.top/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

learning-striving

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值