Pandas知识点-合并操作combine

combine是联合的意思,在Pandas中,combine()方法也是一种实现合并的方法,本文介绍combine()方法的用法。
一、combine_first()实现合并
在介绍combine()方法前,先介绍比combine()更特殊的combine_first()方法。

combine_first(other): 对两个DataFrame进行联合操作,实现合并的功能,other参数传入被合并的DataFrame。
combine_first()方法根据DataFrame的行索引和列索引,对比两个DataFrame中相同位置的数据,优先取非空的数据进行合并。
如果调用combine_first()方法的df1中数据非空,则结果保留df1中的数据,如果df1中的数据为空值且传入combine_first()方法的df2中数据非空,则结果取df2中的数据,如果df1和df2中的数据都为空值,则结果保留df1中的空值(空值有三种: np.nan、None 和 pd.NaT)。
即使两个DataFrame的形状不相同也不受影响,联合时主要是根据索引来定位数据的位置。
二、combine()实现合并

combine(other, func): 对两个DataFrame进行联合操作,实现合并的功能。other参数传入被合并的DataFrame,func参数传入合并的规则函数,两个参数都是必传参数。
func函数的入参是两个Series,分别来自两个DataFrame(将DataFrame按列遍历),返回结果是一个合并之后的Series,在函数中实现合并的规则。
func可以是匿名函数、Python库中定义好的函数、或自定义的函数,要满足两个入参一个返回值,且入参和返回值是数组或Series。如上面的例子中,使用了匿名函数,合并规则为返回两个DataFrame中非空数据更多的列。原理如下图。

三、调用已有函数和自定义函数

  1. 调用numpy中的函数

fmax()是numpy中实现的函数,用于比较两个数组,返回一个新的数组。返回两个数组中相同索引的最大值,如果其中一个数组的值为空则返回非空的值,如果两个数组的值都为空则返回第一个数组的空值。
这个函数很适合用于combine()方法中,当然还有很多现成的函数可以调用,按需调用即可。
2. 自定义函数实现combine_first()相同功能

自定义一个函数first_not_na()在合并时优先取非空的数据,这个函数实现的功能与combine_first(other)方法相同。
四、合并时填充空值

fill_value: 先用fill_value填充DataFrame中的空值,再按传入的函数进行合并操作。
fill_value会填充DataFrame中所有列的空值,而且是在合并之前先填充。
上面的例子中自定义了函数save_max(),合并时取同位置的最大值,原理如下图。

五、不处理缺少的列

overwrite: 如果调用combine()方法的DataFrame中存在的列,在传入combine()方法的DataFrame中不存在,则先在传入的DataFrame中添加一列空值。overwrite参数默认为True,如第四部分的例子中df4的填充原理如下。

如果将overwrite参数设置成False,则不会给传入combine()方法的DataFrame添加不存在的列,并且合并时不会处理调用combine()方法的DataFrame中多出的列,多出的列直接原样返回。原理如下图。

六、总结
同样是合并操作,相对于前面文章介绍的concat()、merge()、join()三个方法,combine()方法可以自定义合并的规则。当需要合并两个相似的数据集,且两个数据集里的数据各有一部分是目标数据时,很适合使用combine()方法。
例如其中一个DataFrame中的数据比另一个DataFrame中的数据多,但第一个DataFrame中的部分数据质量(准确性、缺失值数量等)不如第二个DataFrame中的高,就可以使用combine()方法。
以上就是Pandas联合方法combine()的介绍,如果需要本文代码,可以扫码关注公众号“Python碎片”,然后在后台回复“pandas15”关键字获取完整代码。想学习更多Python知识,记得扫码关注。

参考文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.combine.html

Pandas知识点-合并操作combine相关推荐

  1. Pandas知识点-合并操作join

    Pandas知识点-合并操作join 在Pandas中,join()方法也可以用于实现合并操作,本文介绍join()方法的具体用法. 一.基础合并操作 join(other): 将一个或多个DataF ...

  2. Pandas知识点-合并操作merge

    Pandas知识点-合并操作merge merge()方法是Pandas中的合并操作,在数据处理过程中很常用,本文介绍merge()方法的具体用法. 一.基础合并操作 merge(left, righ ...

  3. Pandas知识点-添加操作append

    Pandas知识点-添加操作append 在Pandas中,append()方法用于将一个或多个DataFrame或Series添加到DataFrame中.append()方法也可以用于合并操作,本文 ...

  4. Pandas知识点-连接操作concat

    Pandas知识点-连接操作concat Pandas提供了多种将Series.DataFrame对象合并的功能,有concat(), merge(), append(), join()等.这些方法都 ...

  5. Pandas知识点-比较操作

    Pandas知识点-比较操作 比较操作是很简单的基础知识,不过Pandas中的比较操作有一些特殊的点,本文进行介绍. 一.比较运算符和比较方法 比较运算符用于判断是否相等和比较大小,Python中的比 ...

  6. Pandas知识点-排序操作

    Pandas知识点-排序操作 数据处理过程中,经常需要对数据进行排序,使数据按指定的顺序排列(升序或降序). 在Pandas中,排序功能已经实现好了,我们只需要调用对应的方法即可. 本文使用的数据来源 ...

  7. 数据分析之Pandas合并操作总结

    ↑↑↑关注后"星标"Datawhale每日干货 & 每月组队学习,不错过Datawhale干货 作者:耿远昊,Datawhale成员,华东师范大学 pandas 是一个强大 ...

  8. Pandas知识点-索引和切片操作

    Pandas知识点-索引和切片操作 索引和切片操作是最基本最常用的数据处理操作,Pandas中的索引和切片操作基于Python的语言特性,支持类似于numpy中的操作,也可以使用行标签.列标签以及行标 ...

  9. pandas合并操作

    pandas合并操作 在实际工作中,我们的数据经常存储在多个文件中,这时候就需要挨个读取出来,然后合并成一个DataFrame对象.在pandas中,可以通过pd.concat和pd.merge来实现 ...

最新文章

  1. PriorityBlockingQueue详解
  2. Name与x:Name的关系--转载
  3. cgi与php的区别,fastcgi与cgi的区别
  4. 经典C语言程序100例之三八
  5. Java语言编程基础:数组
  6. 介绍一个非常实用的Visual Studio Code扩展 - indent-rainbow
  7. Go单测测试 — 数据库 CRUD 的 Mock 测试
  8. 微信小程序的零食商城
  9. php 合并数组对象,JS内数组合并方法与对象合并实现步骤详解
  10. PAT乙级题解目录——更新ing
  11. Selenium 高阶应用之WebDriverWait 和 expected_conditions
  12. JavaScript版MD5应用
  13. 利用绝对定位和相对定位对CSS中区块进行位置调整
  14. 全球连接器厂商TOP 50!(含具体分析报告)
  15. 如何做到在子线程更新 UI?
  16. 在Linux上配置基于Web的网络流量监控系统的方法
  17. 项目反应理论 EM估计
  18. java基础——常用类
  19. 【2022年火爆的商铺共享WiFi系统源码】
  20. UVA 1637 - Double Patience(概率DP)

热门文章

  1. 深入学习SpringMVC以及学习总结
  2. Java实现单词树(trie)
  3. 最新版Byte Buddy完全支持Java 11
  4. Junit3.8源码--核心类
  5. 用uGUI开发自定义Toggle Slider控件
  6. 利用dbms_metadata.get_ddl查看DDL语句
  7. UITableViewCell自适应高度
  8. HTMLParser使用举例
  9. 用于 Keras 用户使用的 TensorFlow.js layers API
  10. Spring DataSource JNDI - Tomcat JNDI 配置示例