python pandas合并_python学习:pandas学习笔记(四)合并
本次笔记内容:
[i for i in a if i in b]等
pd.concat(join='outer', axis=0...)
pd.merge(df1,df2,how='inner',left_index...left_on='colname')
总结和提醒
先说一个pandas之外的东西:
在对list进行操作时,有时需要提取两个list的交集,补集,或者不重复的两者合集等。
diff = [i for i in list1 if i not in list2]
# 找到list1中有,list2中没有的object, 直截了当。同理可得:
diff = [i for i in list1 if i in list2]
diff = [i for i in list2 if i not in list1] # 等等
工作中有时候有两个相近的data frame,我们同样需要提取两者的交集,补集,或者不重复的两者合集等。
根据实际情况,可以先把两个data frame的index转化为两个list, 然后再进行操作。
合并两个data frame时,需要了解merge和concat的区别。
pd.concat(join='outer', axis=0...)
concat默认为将两个(或多个)dataframe的行合并起来(有重复的行算作新的行,允许重复行名),列则相同的归在同一列。这使得合并后行可能有重复,列不会有。且默认为'outer'的方式,即合并后的dataframe列,是df1和df2列的合集。'inner'则为合并后的dataframe列是df1,df2的交集。
join_axes=参数指定了合并后dataframe的列。比方说pd.concat([df1,df2], join_axes=[df1.columns])则按照df1的列来合并,不会出现df2独有的列。
pd.merge(df1,df2,how='inner', left_index...left_on='colname')...
pd.merge()是更加正式、严谨,功能完善的用法。注意这里不用把要merge的dataframes放进[]中。pd.merge()会识别出两个(或多个)dataframe共有的column, 并且以此为key来进行合并。其默认为'inner'合并。
on='colname' 指定根据哪一列来进行合并,在这个colname同时出现在两个dataframe中才可以
left_on='colname, right_on='colname', left_index=True...如果key的colnames不同,指定两个要合并的dataframe的key。可以指定Index为key。
how='inner' 指定合并方式为inner, outer, left, right。指定为left则合并后dataframe的colnames和第一个dataframe一致,right则为与第二个dataframe一致。
suffixes=[...] 如果两个要合并的dataframe中存在一个行名对应了2个不同的值,则会根据不同dataframe来源拆分开来。以suffixes设置其后缀。
书和网站等资源会把pd.merge()总结为"one to one", "many to one", "many to many"三种。其实就是两个待合并的dataframe是否存在重复行,存在重复行如何合并的问题。
"one to one"是两个dataframe可以一一对应,其行数目一致。
"many to one"就是只有一个dataframe存在重复行。pd.merge()的合并dataframe会以重复行为准进行填充。"many to many"也是一样的。
总结和提醒
综上:
pd.concat()适用于2个或多个dataframe的合并,可以选择inner和outer的方式; pd.merge()只能合并2个dataframe,可以选择inner,outer,left,right的合并方式。
pd.concat()的默认合并方式为outer及对行进行叠加式的合并,即合并后行的数目为合并前之和。pd.merge()的默认合并方式为inner。两种合并方式得到的合并后dataframe列都是合并前列名的合集。
pd.concate(key=[...])是在你想要合并后的dataframe为multiindex设置的,不要和pd.merge()中合并需要一个key的概念混了。
pd.concat()默认以index作为key来合并,pd.merge()可以设置为index,也可以指定其他的column。其默认是找到两个dataframe中相同的列名作为合并的key。
即使两个dataframe中没有相同的行或列,pd.concat()也可以把他们拼接起来,并且用NaN填充空缺值。pd.merge()必须要有相同的列。可以使用df1.join(df2)把df2的列合并到df1上。
另外append也可以当concate的默认用法来使用,比方说df1.append(df2)但是由于创造了新的dataframe,效率并不高。
df1.join(df2)的结果为:df1的行及df1,df2列的合集。有点像R里cbind()的用法。
....等我想到了会加上。
python pandas合并_python学习:pandas学习笔记(四)合并相关推荐
- python数据分析知识点_Python数据分析--Pandas知识点(三)
本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. 下面将是在知识点一, 二的基础上继续总结. 前面所介绍的都是以表格的形式中展现数据, 下面将介绍Pandas与Matpl ...
- python常用代码_Python常用算法学习(3)(原理+代码)——最全总结
1,什么是算法的时间和空间复杂度 算法(Algorithm)是指用来操作数据,解决程序问题的一组方法,对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但是在过程中消耗的资源和时间却会有很大 ...
- python中如何将两个列表进行合并_python怎样将两个list合并
python中两个列表合并:a=[1, 2, 3, 4, 5, 6] b=['a', 'b', 'c', 'd'] 方法1: a+b 如下:>>> a=[1,2,3,4,5,6] & ...
- python ndarray合并_Python干货-Numpy的ndarray的合并与分割
# 导入numpy import numpy as np ndarray的合并 定义要使用的数据源 a = np.array([1, 1, 1]) b = np.array([2, 2, 2]) pr ...
- python dict遍历_python 字典(dict)遍历的四种方法性能测试报告
python中,遍历dict的方法有四种.但这四种遍历的性能如何呢?我做了如下的测试 l = [(x,x) for x in xrange(10000)] d = dict(l) from time ...
- python数据分析包pandas论文_python数据分析pandas包入门学习(一)pandas数据结构介绍...
本文参考<利用python进行数据分析>的第五章 pandas入门python 1 pandas数据结构介绍 pandas有两种主要的数据结构:series和DataFrame Serie ...
- python xlwings 切片_Python xlwings库学习笔记(1)
Python xlwings库学习笔记(1) Python是最近几年很火的编程语言,被办公自动化的宣传吸引入坑,办公自动化必然绕不开Excel的操作,能操作Excel的库有很多,例如: xlrd xl ...
- python编程语言继承_python应用:学习笔记(Python继承)
学习笔记(Python继承)Python是一种解释型脚本语言,可以应用于以下领域: web 和 Internet开发 科学计算和统计 人工智能 教育 桌面界面开发 后端开发 网络爬虫 有几种叫法(父类 ...
- python dict方法_python dict()方法学习笔记
学习PYTHON 的dict()方法笔记. dict() -> new empty dictionary | dict(mapping) -> new dictionary initial ...
- python socket服务器_python网络编程学习笔记(三):socket网络服务器
1.TCP连接的建立方法 客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较.步骤 TCP客户端 TCP服务器 第一步 建立socket对象 建立socket对象 ...
最新文章
- 漫话:如何给女朋友解释什么是 Git 和 GitHub?
- 真惨!连各大编程语言都摆起地摊了!
- shell编程学习笔记--整数自增
- cross--向量或矩阵的叉乘
- QT设置控件背景为透明
- 数模笔记_单变量最优化
- Vue通过build打包后 打开index.html页面是空白的
- Python---面向对象(一)
- SpringBoot实战(六):Redis Pipeline 轻松实现百倍性能提升
- OLAP-presto-大数据Week13-DAY-presto
- 搜狗输入法劝退换成了谷歌拼音
- 【渗透测试】常用工具总结
- android键盘驱动程序下载,万能键盘驱动程序
- *.brd 文件 是用什么软件打开的?
- 北京市2012年职工平均月工资5223元
- 华硕服务器怎么装win7系统教程视频,华硕电脑离线重装win7系统详细教程
- 免费小程序制作平台体验感受分享
- 感受Google的汉英翻译能力
- nacis服务注册原理_Nacos 服务注册的原理
- VARCHART XGantt系列教程:如何利用颜色来丰富甘特图智能