栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 数据合并函数 merge, concat, append的使用方法比较小结

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 数据合并函数 merge, concat, append的使用方法比较小结

概述

数据分析中经常会遇到数据合并的基本问题 1. 数据或表格的上下连接 2. 数据或表格的左右连接。根据上述问题 本文总结了python中的表格合并函数的基本用法和使用效果

merge : 主要用于表格的左右连接concat : 既能用于表格的上下连接 也能用于表格的左右连接 主要取决于参数axis的设定append: 只能用于表格的上下连接 数据准备和说明 示例代码
# 1.建立数据表
import numpy as np
import pandas as pd
df1 pd.Dataframe({ id : [ 01 , 02 , 03 , 04 ], 
 name : [ Alice , Bruce , Cook , Daisy ], 
 school : [ AA , BB , CC , AA ], 
 score : [85, 90, 75, 80]})
df2 pd.Dataframe({ id : [ 01 , 20 ], 
 name : [ Alice , Jason ], 
 school :[ AA , CC ], 
 score : [85, 88]})

df1和df2 表格的数据呈现如下图 特别注意这2个表格的第1行的数据是相同的。

1. merge() 1. 1 简介

pd.merge(left, right, how: str ‘inner’,on None, left_on None, right_on None,
left_index: bool False, right_index: bool False, sort: bool False,
suffixes (’_x’, ‘_y’), copy: bool True, indicator: bool False,
validate None,) - ‘Dataframe’

1. 2 关键参数的使用及实践

merge(): 主要使用于表格的左右连接(横向合并)

参数: left, right
left: 表示连接中放在左边的表格
right: 表示连接中放在右边的表格
df pd.merge(left df1, right df2) 


表格连接的结果是返回了两个表格的“交集” 即两个表格中都存在的相同记录 这是因为merge的参数how,它的默认值为 inner !

参数 how: 连接的方式 有4中选择 “left”, “right”, “inner”, “outer”, 默认值 ”inner
“inner”: 返回两个表格的交集
“outer” 返回两个表格的并集
# 2.1 设置how inner 
df pd.merge(left df1, right df2, how inner )


由于how的默认值是 inner , 因此连接的结果与上面的一样

# 2.2 设置how outer 
df pd.merge(left df1, right df2, how outer )


表格连接的结果 将两个表格中所有的数据 相同的数据只显示1次。相当于两个表格合并后去重。

# 2.3 设置how left -- 按照左边的表格进行数据合并
df pd.merge(left df1, right df2, how left )

# 2.4 设置how right -- 按照右边的表格进行数据合并
df pd.merge(left df1, right df2, how right )


3. 参数 on: 以哪个特征作为连接点

# 3.1 设置on [ id ]
df pd.merge(left df1, right df2, on [ id ], how outer )

# 3.2 设置on [ school ]
df pd.merge(left df1, right df2, on [ school ], how outer )

参数 indicator : 指示器 为布尔值 默认为False
如果indicator设置为True 则向输出数据帧添加一个名为“u merge”的列 显示根据要求 每行数据在2个表格中的合并情况。
# 4.1 设置indicator True
df pd.merge(left df1, right df2, on [ school ], how outer , indicator True)


5. 参数 sort: 排序 根据连接点进行排序 默认值为False

# 5.1 设置sort使用默认值 False 
df pd.merge(left df1, right df2, on [ score ], how outer )

# 5.2 设置sort True 
df pd.merge(left df1, right df2, on [ score ], how outer , sort True)

2. concat() 2. 1 简介

pd.concat(objs: Union[Iterable[ForwardRef(‘NDframe’)], Mapping[Union[Hashable, NoneType], ForwardRef(‘NDframe’)]],
axis 0, join ‘outer’, ignore_index: bool False, keys None, levels None,
names None, verify_integrity: bool False, sort: bool False, copy: bool True,
) - Union[ForwardRef(‘Dataframe’), ForwardRef(‘Series’)]

2. 2 关键参数的使用及实践 数据的上下连接 参数axis 0
df pd.concat([df1, df2], axis 0)


df1和df2是直接进行上下连接 – 常用于数据 记录 的汇总合并

数据的左右连接 参数 axis 1
参数 join的默认值 “outer”, 因此下列2行代码的结果是一样的。
df pd.concat([df1, df2], axis 1)
# df pd.concat([df1, df2], axis 1, join outer )


小结
对比结果 pd.concat() 适用于数据表(Dataframe)的上下连接 而对于表格的左右连接 pd.merge() 会更好一些。

3. append()

函数append(): 只能使用于表格的上下连接 表格的顺序取决于那一个表格放在前面。

# 在表格df1后面连接表格df2:
df df1.append(df2)

# 在表格df2后面连接表格df1
df df2.append(df1)

4. 结束语 merge(): 适用表格的左右连接 并且用法比较灵活便捷。concat(): 虽然可以用于表格的上下连接和左右连接 通常会更适用于上下连接 左右连接的效果比不上merge()函数。append(): 只能用于表格数据的上下连接 表格的先后次序取决于语句中哪个表格放在前面。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267324.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号