pandas的拼接操作

文章目录

    • 1. pandas.concat()函数
    • 2. pandas.merge()函数
    • 3. pandas.join()函数
    • 4. pandas.append()函数
    • 5. 四个函数的区别
    • 6. 参考

在数据处理过程中会遇到多个数据集之间进行拼接的操作,一般针对的是DataFrame类型的数据进行拼接操作。

1. pandas.concat()函数

代码展示

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
           keys=None, levels=None, names=None, verify_integrity=False,
           copy=True)

参数解释

axis:拼接轴方向,默认为0,沿行拼接;若为1,沿列拼接

join默认外联’outer’,拼接另一轴所有的label,缺失值用NaN填充;内联’inner’,只拼接另一轴相同的label

join_axes: 指定需要拼接的轴的labels,可在join既不内联又不外联的时候使用

ignore_index默认为False,ignore_index = True表示对index进行重新排序

keys:多重索引

举例

#表示按行拼接,外连接,重置索引
pd.concat([df1,df2],ignore_index=True)

#表示按列拼接,指定只取df1的index的数据
pd.concat([df1,df2], axis=1, join_axes=[df1.index])

2. pandas.merge()函数

代码展示

df.merge(left, right, how='inner', on=None, left_on=None,
         right_on=None, left_index=False, right_index=False, 
         sort=False, suffixes=('_x', '_y'), copy=True,ndicator=False,
         validate=None)

参数解释

how:{'left’, ‘right’, ‘outer’, ‘inner’}, 默认‘inner’,类似于SQL的内联。'left’类似于SQL的左联;'right’类似于SQL的右联;‘outer’类似于SQL的全联

on:进行合并的参照列名,必须一样。若为None,方法会自动匹配两张表中相同的列名

left_on: 左边df进行连接的列

right_on: 右边df进行连接的列

suffixes: 左、右列名称前缀

validate默认None,可定义为“one_to_one” 、“one_to_many” 、“many_to_one”和“many_to_many”,即验证是否一对一、一对多、多对一或多对多关系

举例

#按列key进行outer操作
pd.merge(left, right, on='key',how='outer')

#键名不同时的连接
pd.merge(left,right,left_on='A',right_on='B')

3. pandas.join()函数

代码展示

df.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

参数解释

on:参照的左边df列名key(可能需要先进行set_index操作),若未指明,按照index进行join

how:{‘left’, ‘right’, ‘outer’, ‘inner’}, 默认‘left’,即按照左边df的index(若声明了on,则按照对应的列);若为‘right’abs照左边的df,若‘inner’为内联方式;若为‘outer’为全连联方式。

sort:是否按照join的key对应的值大小进行排序,默认False

lsuffix,rsuffix:当left和right两个df的列名出现冲突时候,通过设定后缀的方式避免错误

举例

# 以索引,并集
left.join(right,how='outer') 

# 以索引,交集
left.join(right,how='inner')

# 通过添加后缀避免冲突
df3.join(df4 , lsuffix='_df3', rsuffix='_df4')   

4. pandas.append()函数

代码展示

#行方向的拼接操作
df1.append(df2, ignore_index=False, verify_integrity=False)

参数解释

ignore_index:若为True,则对index进行重排

verify_integrity:对index的唯一性进行验证,若有重复,报错。若已经设置ignore_index,则该参数无效

举例

#index重排,效果类似于pd.concat([df1, df2], ignore_index=True)
df1.append(df2,ignore_index=True)    

5. 四个函数的区别

  • concat与append是属于拼接操作,append是concat简略形式,只能在axis=0上进行合并
  • merge与join属于关联操作,类似于sql中的join操作
  • merge可以实现列与索引上关联操作,join只能索引上关联操作
  • 关联操作基本上用merge就可以了
函数 默认连接方式 调用方法 备注
.concat() axis为0, join=‘outer’,行拼接,取并集 res = pd.concat( [df1,df2], axis=0 ) axis设置行/列拼接的方向
.merge() 列拼接,取交集 result=pd.merge(df1, df2,how=‘left’) 只能按列拼接
.join() how=’left’ ,左列拼接 df1.join(df2) 只能按列拼接
.append() 按行拼接 df1.append(df2) 只能按行拼接

6. 参考

https://blog.csdn.net/weixin_42782150/article/details/89546357
https://blog.csdn.net/qq_27575895/article/details/88789147
https://blog.csdn.net/gdkyxy2013/article/details/80785361
https://blog.csdn.net/ai_1046067944/article/details/86481276
https://blog.csdn.net/guofei_fly/article/details/85455813

你可能感兴趣的:(python相关用法)