关于python DataFrame的合并方法总结
作者:haha_point 发布时间:2022-02-02 14:13:58
python DataFrame的合并方法
Python的Pandas针对DataFrame,Series提供了多个合并函数,通过参数的调整可以轻松实现DatafFrame的合并。
首先,定义3个DataFrame df1,df2,df3,进行concat、merge、append函数的实验。
df1=pd.DataFrame([[1,2,3],[2,3,4]],columns=['a','b','c'])
df2=pd.DataFrame([[2,3,4],[3,4,5]],columns=['a','b','c'])
df3=pd.DataFrame([[1,2,3],[2,3,4]],columns=['a','b','d'])
df1
a b c
0 1 2 3
1 2 3 4
df2
a b c
0 2 3 4
1 3 4 5
df3
a b d
0 1 2 3
1 2 3 4
#concat函数
pandas中concat函数的完整表达,包含多个参数,常用的有axis,join,ignore_index.
concat函数的第一个参数为objs,一般为一个list列表,包含要合并两个或多个DataFrame,多个Series
pandas.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
copy=True)
1.axis表示合并方向,默认axis=0,两个DataFrame按照索引方向纵向合并,axis=1则会按照columns横向合并。
pd.concat([df1,df2],axis=1)
a b c a b c
0 1 2 3 2 3 4
1 2 3 4 3 4 5
2.join表示合并方式,默认join=‘outer’,另外的取值为’inner’,只合并相同的部分,axis=0时合并结果为相同列名的数据,axis=1时为具有相同索引的数据
pd.concat([df2,df3],axis=0,join='inner')
a b
0 2 3
1 3 4
0 1 2
1 2 3
pd.concat([df2,df3],axis=1,join='inner')
a b c a b d
0 2 3 4 1 2 3
1 3 4 5 2 3 4
3.ignore_index表示索引的合并方式,默认为False,会保留原df的索引,如果设置ignore_index=True,合并后的df会重置索引。
pd.concat([df1,df2],ignore_index=True)
a b c
0 1 2 3
1 2 3 4
2 2 3 4
3 3 4 5
#merge函数
merge函数是pandas提供的一种数据库式的合并方法。
on可以指定合并的列、索引,how则是与数据库join函数相似,取值为left,right,outer,inner.left,right分别对应left outer join, right outer join.
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,
validate=None):
merge函数可以通过pandas.merge(df1,df2)、df1.merge(df2)两种形式来实现两个DataFrame的合并,df1.merge(df2)是默认left=self的情况。
df_merge =df1.merge(df3,on=['a','b'])
a b c d
0 1 2 3 3
1 2 3 4 4
#append函数
append函数是pandas针对DataFrame、Series等数据结构合并提供的函数。
df1.append(self, other, ignore_index=False, verify_integrity=False)
df1.append(df2)与pd.concat([df1,df2],ignore_index=False)具有相同的合并结果
df1.append(df2)
a b c
0 1 2 3
1 2 3 4
0 2 3 4
1 3 4 5
更多使用方法可以参考pandas关于数据合并的官方文档http://pandas.pydata.org/pandas-docs/stable/merging.html
把两个dataframe合并成一个
1.merage
result = pd.merge(对象1, 对象2, on='key')
对象1 和 对象2分别为要合并的dataframe,key是在两个dataframe都存在的列(类似于数据库表中的主键)
2.append
result = df1.append(df2)
result = df1.append([df2, df3])
result = df1.append(df4, ignore_index=True)
3.join
result = left.join(right, on=['key1', 'key2'], how='inner')
4.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)
frames = [df1, df2, df3]
result = pd.concat(frames)
result = pd.concat(frames, keys=['x', 'y', 'z'])
result = pd.concat([df1, df4], ignore_index=True)
来源:https://blog.csdn.net/haha_point/article/details/86512316


猜你喜欢
- MySQL存储过程SAVEPOINT ROLLBACK to示例如下:DELIMITER $$DROP PROCEDURE IF EXIST
- 本文实例讲述了Python实现备份MySQL数据库的方法。分享给大家供大家参考,具体如下:#!/usr/bin/env python# -*
- 有时,在用import导入项目文件夹里自己写的python文件时,常常说找不到该文件,这时可以将项目路径添加到PYTHONPATH下。暂时添
- Python等工具确实是不错的工具,但是有时候不管是基础的Python还是Python的软件包都让我觉得对中文不是很亲近。时不时地遇到一点问
- 1、DOMWEB标准现在可真是热门中热门,不过下面讨论的是一个不符合标准的document.all[]。DOM--DOCUMENTOBJEC
- 作者: Alan Pearce原文: Multi-Column Layouts Climb Out of the Box地址: http:/
- 本文实例讲述了Python进程的通信Queue、Pipe。分享给大家供大家参考,具体如下:内容相关:概念:进程的通信Queue:创建与使用P
- 本文为大家分享了mysql 8.0.16 压缩包安装配置方法,供大家参考,具体内容如下运行环境:Windows 10 x641、下载zip安
- 1 predict()方法当使用predict()方法进行预测时,返回值是数值,表示样本属于每一个类别的概率,我们可以使用numpy.arg
- 如下所示:def findSmallest(arr): smallest = arr[0]#将第一个元素的值作为最小值赋给smallest
- 地址:https://youzan.github.io/vant/#/zh-CN/intro一.引入Vant组件库1.首先运行 npm in
- Python提供了一些内建函数用于基本对象类型:cmp(),repr(),str(),type()和等同于repr()的('
- 我看过一篇关于程序员写博客的文章,他说很多的程序员过了两年写了很多的代码,但是回想起来自己具体做了哪些技术点,遇到坑几乎没有印象,所以说文字
- 目录MySQL数据库重命名的方法 第一种方法:rename database 弃用了第二种方法:mysqldump 备份第三种方法
- 控制的前提是已经运行Microsip.exe 首先选择文件,选择txt格式文件,一行一个手机号格式;如下点击拨打下一个
- 文章slice介绍append的机制slice tricksgo dataslicearray的语法: [4]int{1,2,3,4}, [
- 但是问题有三个:1、我们不知道已经有哪些轮子已经造好了,哪个适合你用。有名有姓的的著名轮子就400多个,更别说没名没姓自己在制造中的轮子。2
- logging模块是Python的一个标准库模块,开发过程中,可以通过该模块,灵活的完成日志的记录。logging模块提供了两种记录日志的方
- 背景和目的:利用python request 编写脚本测试公司系统的文件上传接口。前端读取文件的大小然后文件分片传给后端,后端将每一片数据重
- 你完成了你的品牌新的应用程序,一切工作就像一个魅力。用户来使用你的网络。每个人是幸福的。 然后,突然间,一个大爆发的用户杀死你的MySQL服