DataFrame(13):DataFrame之合并组合
在Pandas的实践过程中,我们经常需要将两个DataFrame合并组合在⼀起再进⾏处理,⽐如将不同来源的数据合并在⼀起,或者将不同⽇期的DataFrame合并在⼀起。
DataFrame的合并组合从⽅向上分,⼤体上分为两种情况:横向的,纵向的。(这个很容易理解吧)
看下如下的图⽰(图⽚来⾃Pandas官⽹)
merge函数横向
纵向
另外需要注意的是,两个DataFrame在合在⼀起的时候,如果针对重叠项(⽐如都有column B)会有两种不同的处理⽅式,⼀种是针对重叠项进⾏合并处理(⽐如相加,或者直接取代);另⼀种是忽略重叠项,只是简单的组合在⼀起。前者我们称为合并,后者我们叫做组合。
另外,在Pandas中有很多不同函数和不同⽤法,⽐如有concat, join, merge, append,它们各有不同的使⽤场景。
纵向连接
横向连接与合并
前⾯我们已经知道concat不仅可以纵向连接,也可以横向连接
我们看到concat仍然是⼀种拼接,其根据index进⾏join,⽽merge更加灵活,可以根据指定的column来进⾏合并,如下:
可以针对多个列进⾏join,并重新命名后缀,如下:
关于merge还有⼏个常⽤的参数说明如下:
left_index & right_index: 当我们需要通过index来进⾏join的时候(类似concat),则可以使⽤left_index 或者right_index.
sort: 默认为False,如果True则将join的key按照字典顺序进⾏排序,⽐如我们按照"city"进⾏join的时候,会按照"city"的字典顺序进⾏排序。但如果我们不需要排序,则可以将其置为False,以提⾼性能
validate: 主要针对duplicate的情况,它有以下⼏个参数可以设置
“one_to_one” or “1:1”: checks if merge keys are unique in both left and right datasets.
“one_to_many” or “1:m”: checks if merge keys are unique in left dataset.
“many_to_one” or “m:1”: checks if merge keys are unique in right dataset.
“many_to_many” or “m:m”: allowed, but does not result in checks.
更多关于merge的说明参考如下链接:
另外,join是merge的⼀种简便写法,其底层是通过merge来实现的,如下两种表达⽅式是相同的。
⽰例:
merging_join_key_columns.png
需要注意的是当要join的两个DataFrame有同名的列时,必须指定suffix,否则会报错,如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论