本次笔记内容:

[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学习笔记(四)合并相关推荐

  1. python数据分析知识点_Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. 下面将是在知识点一, 二的基础上继续总结. 前面所介绍的都是以表格的形式中展现数据, 下面将介绍Pandas与Matpl ...

  2. python常用代码_Python常用算法学习(3)(原理+代码)——最全总结

    1,什么是算法的时间和空间复杂度 算法(Algorithm)是指用来操作数据,解决程序问题的一组方法,对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但是在过程中消耗的资源和时间却会有很大 ...

  3. 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] & ...

  4. python ndarray合并_Python干货-Numpy的ndarray的合并与分割

    # 导入numpy import numpy as np ndarray的合并 定义要使用的数据源 a = np.array([1, 1, 1]) b = np.array([2, 2, 2]) pr ...

  5. python dict遍历_python 字典(dict)遍历的四种方法性能测试报告

    python中,遍历dict的方法有四种.但这四种遍历的性能如何呢?我做了如下的测试 l = [(x,x) for x in xrange(10000)] d = dict(l) from time ...

  6. python数据分析包pandas论文_python数据分析pandas包入门学习(一)pandas数据结构介绍...

    本文参考<利用python进行数据分析>的第五章 pandas入门python 1 pandas数据结构介绍 pandas有两种主要的数据结构:series和DataFrame Serie ...

  7. python xlwings 切片_Python xlwings库学习笔记(1)

    Python xlwings库学习笔记(1) Python是最近几年很火的编程语言,被办公自动化的宣传吸引入坑,办公自动化必然绕不开Excel的操作,能操作Excel的库有很多,例如: xlrd xl ...

  8. python编程语言继承_python应用:学习笔记(Python继承)

    学习笔记(Python继承)Python是一种解释型脚本语言,可以应用于以下领域: web 和 Internet开发 科学计算和统计 人工智能 教育 桌面界面开发 后端开发 网络爬虫 有几种叫法(父类 ...

  9. python dict方法_python dict()方法学习笔记

    学习PYTHON 的dict()方法笔记. dict() -> new empty dictionary | dict(mapping) -> new dictionary initial ...

  10. python socket服务器_python网络编程学习笔记(三):socket网络服务器

    1.TCP连接的建立方法 客户端在建立一个TCP连接时一般需要两步,而服务器的这个过程需要四步,具体见下面的比较.步骤 TCP客户端 TCP服务器 第一步 建立socket对象 建立socket对象 ...

最新文章

  1. 漫话:如何给女朋友解释什么是 Git 和 GitHub?
  2. 真惨!连各大编程语言都摆起地摊了!
  3. shell编程学习笔记--整数自增
  4. cross--向量或矩阵的叉乘
  5. QT设置控件背景为透明
  6. 数模笔记_单变量最优化
  7. Vue通过build打包后 打开index.html页面是空白的
  8. Python---面向对象(一)
  9. SpringBoot实战(六):Redis Pipeline 轻松实现百倍性能提升
  10. OLAP-presto-大数据Week13-DAY-presto
  11. 搜狗输入法劝退换成了谷歌拼音
  12. 【渗透测试】常用工具总结
  13. android键盘驱动程序下载,万能键盘驱动程序
  14. *.brd 文件 是用什么软件打开的?
  15. 北京市2012年职工平均月工资5223元
  16. 华硕服务器怎么装win7系统教程视频,华硕电脑离线重装win7系统详细教程
  17. 免费小程序制作平台体验感受分享
  18. 感受Google的汉英翻译能力
  19. nacis服务注册原理_Nacos 服务注册的原理
  20. VARCHART XGantt系列教程:如何利用颜色来丰富甘特图智能

热门文章

  1. OSS简单上传下载整理
  2. 联想小新pro16锐龙版和酷睿版的区别 哪个好
  3. 【kimol君的无聊小发明】—用python插入独创性声明
  4. 裂变是什么?如何让用户自行裂变?流程、细节大曝光
  5. 全开源二次元风格发卡
  6. 软件公司防止代码外泄的几种方法介绍
  7. 一条SQL返回多个统计求和
  8. android 左右切换对话框 dialog
  9. python第六周项目华容道_华容道游戏(中)
  10. 学人工智能以后从事什么工作?这6大就业方向前景广阔