Pandas--合并
合并
- 读入数据集
一、append与assign
-
append方法
(a)利用序列添加行(必须指定name)
(b)用DataFrame添加表 -
assign方法
该方法主要用于添加列,列名直接由参数指定:
可以一次添加多个列:
二、combine与update
-
comine方法
comine和update都是用于表的填充函数,可以根据某种规则填充
(a)填充对象
可以看出combine方法是按照表的顺序轮流进行逐列循环的,而且自动索引对齐,缺失值为NaN,理解这一点很重要
(b)一些例子
(c)combine_first方法
这个方法作用是用df2填补df1的缺失值,功能比较简单,但很多时候会比combine更常用,下面举两个例子: -
update方法
(a)三个特点
①返回的框索引只会与被调用框的一致(默认使用左连接,下一节会介绍)
②第二个框中的nan元素不会起作用
③没有返回值,直接在df上操作
(b)例子
三、concat方法
concat方法可以在两个维度上拼接,默认纵向凭借(axis=0),拼接方式默认外连接
所谓外连接,就是取拼接方向的并集,而’inner’时取拼接方向(若使用默认的纵向拼接,则为列的交集)的交集
下面举一些例子说明其参数:
默认状态拼接:
axis=1时沿列方向拼接:
join设置为内连接(由于axis=0,因此列取交集):
join设置为外链接:
verify_integrity检查列是否唯一:
key参数用于对不同的数据框增加一个标号,便于索引:
四、merge与join
-
merge函数
merge函数的作用是将两个pandas对象横向合并,遇到重复的索引项时会使用笛卡尔积,默认inner连接,可选left、outer、right连接
所谓左连接,就是指以第一个表索引为基准,右边的表中如果不再左边的则不加入,如果在左边的就以笛卡尔积的方式加入
merge/join与concat的不同之处在于on参数,可以指定某一个对象为key来进行连接
同样的,下面举一些例子:
以key1为准则连接,如果具有相同的列,则默认suffixes=(’_x’,’_y’):
以多组键连接:
默认使用inner连接,因为merge只能横向拼接,所以取行向上keys的交集,下面看如果使用how=outer参数
注意:这里的how就是concat的join
左连接:
右连接:
如果还是对笛卡尔积不太了解,请务必理解下面这个例子,由于B的所有元素为2,因此需要6行:
validate检验的是到底哪一边出现了重复索引,如果是“one_to_one”则两侧索引都是唯一,如果"one_to_many"则左侧唯一
indicator参数指示了,合并后该行索引的来源 -
join函数
join函数作用是将多个pandas对象横向拼接,遇到重复的索引项时会使用笛卡尔积,默认左连接,可选inner、outer、right连接
对于many_to_one模式下的合并,往往join更为方便
同样可以指定key:
多层key: