千家信息网

python中怎么利用pandas合并数据

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,python中怎么利用pandas合并数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Pandas有concat、append、joi
千家信息网最后更新 2026年11月02日python中怎么利用pandas合并数据

python中怎么利用pandas合并数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Pandas有concat、append、join和merge四种方法用于dataframe拼接,

concat、append、join、merge 区别如下:

1、.concat():pandas的顶级方法,提供了axis设置可用于df间行方向(增加行,下同)或列方向(增加列,下同)进行内联或外联拼接操作

2、.append():dataframe数据类型的方法,提供了行方向的拼接操作

3、.join():dataframe数据类型的方法,提供了列方向的拼接操作,支持左联、右联、内联和外联四种操作类型

4、.merge():pandas的顶级方法,提供了类似于SQL数据库连接操作的功能,支持左联、右联、内联和外联等全部四种SQL连接操作类型

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:对index进行重新排序

keys:多重索引

"""

import pandas as pddef df_maker(cols, idxs):    return pd.DataFrame({c:[c+str(i) for i in idxs] for c in cols}, index=idxs)
df1 = df_maker('abc',[1,2,3])df2 = df_maker('cde',[3,4,5])print(df1)print(df2)print(pd.concat([df1,df2])) # 默认沿axis=0,join='out'的方式进行concat print(pd.concat([df1,df2], ignore_index=True)) # 重新设定index(效果类似于pd.concat([df1,df2]).reset_index(drop=True))print(pd.concat([df1,df2], axis=1)) # 沿列进行合并print(pd.concat([df1,df2], axis=1, join='inner')) # 沿列进行合并,采用外联方式因为行中只有index=3是重复的,所以只有一行print(pd.concat([df1,df2], axis=1, join_axes=[df1.index])) # 指定只取df1的index
from pandas import Indexindex = Index([1,2,4])print(pd.concat([df1,df2], axis=1, join_axes=[index])) # 自定义index
print(pd.concat([df1,df2], axis=0,keys=["第一组","第二组"])) # 通过key定义多重索引

append(self, other, ignore_index=False, verify_integrity=False)

"""

常用参数说明:

other:另一个df

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

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

"""

import pandas as pddef df_maker(cols, idxs):    return pd.DataFrame({c:[c+str(i) for i in idxs] for c in cols}, index=idxs)

df1 = df_maker('abc',[1,2,3])df2 = df_maker('cde',[3,4,5])print(df1.append(df2)) # 效果类似于pd.concat([df1,df2]) print(df1.append(df2,ignore_index=True)) # index重排,效果类似于pd.concat([df1, df2], ignore_index=True)#print(df1.append(df2,verify_integrity=True)) # 因为两个df均有index=3,所以报错

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的列名出现冲突时候,通过设定后缀的方式避免错误

"""

import pandas as pdimport numpy as np
df3 = pd.DataFrame({'lkey':['foo','bar','baz','foo'], 'value':np.arange(1,5)})df4 = pd.DataFrame({'rkey':['foo','bar','qux','bar'], 'value':np.arange(3,7)})print(df3)print(df4)#print(df3.join(df4)) # 两者有相同的列名'value',所以报错print(df3.join(df4 , lsuffix='_df3', rsuffix='_df4')) # 通过添加后缀避免冲突print(df3.set_index('lkey').join(df4.set_index('rkey'), how='outer',lsuffix='_df3',rsuffix='_df4')) # 可以通过将两边的key进行set_indexprint(df3.join(df4.set_index('rkey'), on='lkey',lsuffix='_df3',rsuffix='_df4')) # 也可以通过设置后边df中key,并通过on与指定的左边df中的列进行合并,返回的index不变

pd.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, indicator=False,

validate=None):

"""

既可作为pandas的顶级方法使用,也可作为DataFrame数据结构的方法进行调用

常用参数说明:

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",即验证是否一对一、一对多、多对一或

多对多关系

"""

"""

SQL语句复习:

内联:SELECT a.*, b.* from table1 as a inner join table2 as b on a.ID=b.ID

左联:SELECT a.*, b.* from table1 as a left join table2 as b on a.ID=b.ID

右联:SELECT a.*, b.* from table1 as a right join table2 as b on a.ID=b.ID

全联:SELECT a.*, b.* from table1 as a full join table2 as b on a.ID=b.ID

"""

import pandas as pddf3 = pd.DataFrame({'lkey':['foo','bar','baz','foo'], 'value':np.arange(1,5)})df4 = pd.DataFrame({'rkey':['foo','bar','qux','bar'], 'value':np.arange(3,7)})print(df3)print(df4)print(pd.merge(df3,df4))       # on为None,自动找寻相同的列名,即为'value',且默认为内联print(pd.merge(df3,df4,how='outer'))   # 外联模式下print(pd.merge(df3, df4, left_on='lkey',right_on='rkey'))   # 默认内联,2个foo*2个barprint(pd.merge(df3, df4, left_on='lkey',right_on='rkey', how='left'))    # 以左边的df3为标准进行连接print(pd.merge(df3, df4, left_on='lkey',right_on='rkey', how='right'))    # 以右边的df4为标准进行连接print(pd.merge(df3, df4, left_on='lkey',right_on='rkey', how='outer'))    # 全连接print(pd.merge(df3, df4, left_on='lkey',right_on='rkey', how='inner'))    # 内连接

看完上述内容,你们掌握python中怎么利用pandas合并数据的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

方法 外联 数据 参数 方向 方式 相同 常用 类型 效果 顶级 两个 全连 内容 只有 可以通过 右边 后缀 时候 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 百单网互联网科技有限公司怎么样 蓝思科技飞鸽互联网 互联网科技与金融科技 腾讯科技 互联网女皇 汇久创客互联网科技 互联网科技公司介绍 互联网 科技服务平台 中国的互联网科技企业的崛起 创业天下互联网科技有限公司 互联网科技教育视频 互联网科技创新服务 受益于互联网科技的高速发展 国大互联网教育科技有限公司工作 河南住房之家互联网科技 洛阳共同富裕互联网科技有限公司 互联网科技大赛获奖感言 兰石爱特工业互联网科技分公司 长沙易易互联网科技有限公司 如何强化互联网金融科技 有格互联网科技 科技金融是不是互联网金融 互联网为科技 壕鑫互联网络科技 天扬科技互联网广告 智腾互联网科技有限公司 昆明中奇联合互联网科技 吉林省码上互联网科技电话 科技互联网公司两年变化 杭州科技互联网公司有哪些
0