Pandas合并数据

合并数据

当有多张表时,比如菜品订单详情表,菜品信息表,菜品分类表时,我们需要对其进行合并。

堆叠进行数据合并

堆叠就是简单的把两个表拼到一起,也被称作轴向连接、绑定连接,数据堆叠分为横向堆叠和纵向堆叠

横向堆叠

将两个表的x轴拼接到一起,可以使用concat函数完成,先看下concat的源码

def concat(
    objs: Iterable[NDFrame] | Mapping[Hashable, NDFrame],
    axis: Axis = 0,
    join: str = "outer",
    ignore_index: bool = False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity: bool = False,
    sort: bool = False,
    copy: bool = True,
) -> DataFrame | Series:
objs接受多个Series,DataFrame的组合,表示参与连接的pandas对象的列表组合
axis接受0或1,默认为0
join接受inner或者outer。表示其他轴上的索引是按交集还是并集合并,默认并集
join_axes接受Index对象,表示用于其他n-1轴的索引,不执行交集并集运算
ignore_index接受布尔类型。表示是否保留连接轴上的索引,产生一组新索引,默认为否
keys接受squence
levels接受多个squence的list
names接受list
当axis=1时,conat做行对齐,将不同列名称的两张或者多张表合并,当内连接时仅仅返回索引重叠部分,在外连接情况下则显示索引的并集部分数据,不足的地方用NaN来填补。
import pandas as pd
left = pd.DataFrame({'A': ['A0', 'A1'],
                     'B': ['B0', 'B1']},
                    index=['a', 'b'])
right = pd.DataFrame({'A': ['C0', 'C1'],
                      'D': ['D0', 'D1']},
                     index=['c', 'd'])
print(left)
print(right)

print(pd.concat([left, right], join='outer', axis=1))

在这里插入图片描述

如果是inner,则只有行索引一样的才会合并

纵向堆叠

纵向堆叠是让两个数据表在y轴上进行拼接,concat函数和append函数都能实现,在默认情况下,concat函数中的axis的参数为0的情况下,可以将不同行索引的表直接纵向合并
在这里插入图片描述
如图,两张表并没有相同的列索引,所以使用inner的方式连接无法合并
在这里插入图片描述
当我修改列名之后即可,若设置为outner模式
在这里插入图片描述

主键合并数据

pandas.merge(left, right,
	 how='inner', on=None, 
	 left_on=None,right_on=None,left_index=False, 
	 right_index=False, sort=False,
	 suffixes=('_x', '_y'),copy=True, 
	 indicator=False)

主键合并数据就是根据某个几个字段一一对应拼接起来,结果数据集的列数为两个原数据的列数减去连接键的数量

import pandas as pd

# 创建第一个数据集:学生的成绩信息
grades = pd.DataFrame({'ID': [1, 2, 3, 4, 5],
                       'Grade': ['A', 'B', 'C', 'B', 'A']})

# 创建第二个数据集:学生的个人信息
info = pd.DataFrame({'ID': [1, 2, 3, 4, 5],
                     'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
                     'Age': [18, 19, 20, 19, 18]})

# 使用主键合并两个数据集
merged_data = pd.merge(grades, info, on='ID')

# 打印合并后的数据集
print(merged_data)

如图
在这里插入图片描述

重叠合并

两份数据几乎一样的表,如果有一张数据缺失比较多,可以使用重叠合并
重叠合并的语法pandas.DataFrame.combine_first(other)

import pandas as pd


grades = pd.DataFrame({'ID': [1, 2, 3, 4, 5],
                       'Grade': ['A', None, 'C', 'B', 'A']})


info = pd.DataFrame({'ID': [1, 2, 3, 4, 5],
                     'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
                     'Age': [18, 19, 20, 19, 18],
                     'Grade':['A','a',None,'b','a']
                     })


merged_data =grades.combine_first(info)

# 打印合并后的数据集
print(merged_data)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
### 回答1: Pandas合并数据集是指将两个或多个数据集按照一定的规则合并成一个新的数据集。常用的合并方式有concat、merge和join。其中,concat是将两个数据集按照行或列方向拼接在一起,merge是根据某一列或多列的值将两个数据合并成一个,join是根据两个数据集的索引值将它们合并成一个。Pandas合并数据集是数据分析中常用的操作之一,可以帮助我们更好地理解数据,发现数据之间的关系。 ### 回答2: pandas是一个强大的数据分析库,能够方便地进行数据处理和分析。在数据分析中,数据集往往需要进行合并,这时我们就可以用pandas进行数据集的合并pandas数据集的合并可以分为三种方式: 1. 按列合并: 将两个数据集按照列的方向进行合并,可以使用pandas的concat函数。具体步骤如下: 1)通过pd.concat函数对两个数据集进行合并; 2)使用axis参数指定合并方向,默认为0,即按照行的方向合并; 3)可以设置ignore_index参数为True来重新生成索引。 2. 按行合并: 将两个数据集按照行的方向进行合并,可以使用pandas的merge函数。具体步骤如下: 1)通过pd.merge函数对两个数据集进行合并; 2)可以使用on参数指定列名来指定进行合并的列; 3)可以使用how参数指定合并的方式,默认为'inner',即取两个数据集共有的行。 3. 按指定条件合并: 将两个数据集按照指定条件进行合并,可以使用pandas的merge函数。具体步骤如下: 1)通过pd.merge函数对两个数据集进行合并; 2)可以使用left_on、right_on参数指定左、右数据集进行合并的列名; 3)可以使用how参数指定合并的方式,默认为'inner',即取两个数据集共有的行。 以上是pandas合并数据集的三种方式,不同的方式可以根据具体情况进行选择。其中,按指定条件合并是最灵活的方式,可以根据需要进行复杂合并。 在使用pandas合并数据集时,需要注意数据集的格式相同,并且数据字段的名称相同或能够唯一对应。同时,还需要注意是否存在重复的数据,如果存在需要进行去重操作。 ### 回答3: Pandas是一个用于数据分析的Python库,其中的DataFrame是数据处理的重要工具之一。在实际的应用中,我们常常需要将多个数据集进行合并Pandas的merge方法可以方便地完成这个操作。 Pandas的merge方法可以根据指定的key将两个DataFrame中的行连接在一起。key是DataFrame中一个或多个列的名称,这些列的值都是唯一的,用于将行匹配。比如,我们有一个包含学生信息的DataFrame和一个包含课程信息的DataFrame,它们都有一个名为“学号”的列可以用于匹配。那么我们可以使用merge方法将它们连接在一起,这样我们就可以得到一个包含学生和课程信息的完整数据集。 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, validate=None) ``` 其中,left和right是需要合并的DataFrame;how表示合并的方式(inner、outer、left或right);on表示需要连接的列名;left_on和right_on表示需要连接的左右两个DataFrame中不同的列名;left_index和right_index表示是否使用行索引连接;sort表示是否对结果DataFrame按连接列进行排序;suffixes表示重名的列需要加上的后缀。 比如,我们可以这样合并学生信息和课程信息: ``` import pandas as pd # 创建学生信息DataFrame student_df = pd.DataFrame({ '学号': ['s1', 's2', 's3', 's4'], '姓名': ['张三', '李四', '王五', '赵六'], '性别': ['男', '女', '男', '女'] }) # 创建课程信息DataFrame course_df = pd.DataFrame({ '学号': ['s1', 's2', 's3', 's4'], '课程名称': ['数学', '物理', '化学', '英语'], '成绩': [90, 80, 85, 95] }) # 将两个DataFrame合并 result_df = pd.merge(student_df, course_df, on='学号') print(result_df) ``` 运行结果如下: ``` 学号 姓名 性别 课程名称 成绩 0 s1 张三 男 数学 90 1 s2 李四 女 物理 80 2 s3 王五 男 化学 85 3 s4 赵六 女 英语 95 ``` 可以看到,result_df中包含了学生信息和课程信息,行数和列数与student_df相同,只是新增了“课程名称”和“成绩”两列。在合并DataFrame时,Pandas会默认对连接列进行交集操作,即只保留两个DataFrame中都存在的行。如果想要保留所有行,可以使用outer方式合并。如果想要保留左边DataFrame中的所有行,可以使用left方式合并;反之,如果想要保留右边DataFrame中的所有行,可以使用right方式合并

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值