pandas dataframe的合并(append, merge, concat)

人工智能107

创建2个DataFrame:

1.4,ignore_index

默认值:ignore_index=False

合并方向是否忽略原行/列名称,而采用系统默认的索引,即从0开始的int。

axis=0时ignore_index=True,index采用系统默认索引:

axis=1时ignore_index=True,columns采用系统默认索引:

1.5,keys

默认值:keys=None

可以加一层标签,标识行/列名称属于原来哪个df。

axis=0时设置keys:

axis=1时设置keys:

也可以传字典取代keys:

1.6,levels

默认值:levels=None

明确行/列名称取值范围:

非合并方向的行/列名称是否排序。例如1.1中默认axis=0时columns进行了排序,axis=1时index进行了排序。

axis=0时sort=False,columns不作排序:

axis=1时sort=False,index不作排序:

1.8,concat多个DataFrame

2,append

竖方向合并df,没有axis属性

不会就地修改,而是会创建副本

示例:

2.1,ignore_index属性

2.2,append多个DataFrame

和concat相同,append也支持append多个DataFrame

3,merge

示例:

对df1和df2进行merge:

可以看到只有df1和df2的key1=y的行保留了下来,即默认合并后只保留有共同列项并且值相等行(即交集)。

本例中left和right的k1=y分别有2个,最终构成了2*2=4行。

如果没有共同列会报错:

3.1,on属性

*[En]*

**

可以指定on,设定合并基准列,就可以根据k1进行合并,并且left和right共同列k2会同时变换名称后保留下来:

默认值:on的默认值是所有共同列,本例为:on=['k1', 'k2']

3.2,how属性

how取值范围:'inner', 'outer', 'left', 'right'

默认值:how='inner'

'inner':共同列的值必须完全相等:

'outer':共同列的值都会保留,left或right在共同列上的差集,会对它们的缺失列项的值赋上NaN:

'left':根据左边的DataFrame确定共同列的保留值,右边缺失列项的值赋上NaN:

'right':根据右边的DataFrame确定共同列的保留值,左边缺失列项的值赋上NaN:

3.3,indicator

默认值:indicator=False,不显示合并方式

设置True表示显示合并方式,即left / right / both:

Original: https://www.cnblogs.com/guxh/p/9451532.html
Author: guxh
Title: pandas dataframe的合并(append, merge, concat)