Pandas数据合并的两种实现方法

 更新时间:2023年11月26日 10:42:24   作者:GarsonW  
本文主要介绍了Pandas数据合并的两种实现方法,DataFrame数据合并主要使用merge()方法和concat()方法,具有一定的参考价值,感兴趣的可以了解一下

DataFrame数据合并主要使用merge()方法和concat()方法。

1.数据合并(merge()方法)

Pandas模块的merge()进行数据合并时,两个DataFrame对象必须有相同的列。

1.常规合并

import pandas as pd

df1 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
                    '语文':[110,105,109],
                    '数学':[105,88,120],
                    '英语':[99,115,130]})

df2 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
                    '体育':[34.5,39.7,38]})

df_merge=pd.merge(df1,df2,on='编号')
print(df_merge)

该示例中,编号是相同的,所以会将df2中“体育”作为新的一列加入到df1中。 

2.通过索引合并

import pandas as pd

df1 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
                    '语文':[110,105,109],
                    '数学':[105,88,120],
                    '英语':[99,115,130]})

df2 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
                    '体育':[34.5,39.7,38]})

df_merge=pd.merge(df1,df2,left_index=True,right_index=True)
print(df_merge)

3.对合并数据去重

使用到how属性,就是让df1保留所有的行列数据,df2则根据df1的行列进行补全。

import pandas as pd

df1 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
                    '语文':[110,105,109],
                    '数学':[105,88,120],
                    '英语':[99,115,130]})

df2 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
                    '体育':[34.5,39.7,38]})

df_merge=pd.merge(df1,df2,on='编号',left_index=True,right_index=True)
print(df_merge)
df_merge=pd.merge(df1,df2,on='编号',how='left')
print(df_merge)

4.多对一的数据合并

根据共有列中的数据进行合并,df2根据df1的行列进行补全。

import pandas as pd

df1 = pd.DataFrame({'编号':['mr001','mr002','mr003'],
                    '学生姓名':['明日同学','高猿员','钱多多']})

df2 = pd.DataFrame({'编号':['mr001','mr001','mr003'],
                    '语文':[110,105,109],
                    '数学':[105,88,120],
                    '英语':[99,115,130],
                    '时间':['1月','2月','1月']})

df_merge=pd.merge(df1,df2,on='编号')
print(df_merge)

5.多对多的数据合并

根据共有列中的数据进行合并,df2,df1相互补全。

import pandas as pd

df1 = pd.DataFrame({'编号':['mr001','mr002','mr003','mr001','mr001'],
                    '体育':[34.5,39.7,38,33,35]})

df2 = pd.DataFrame({'编号':['mr001','mr002','mr003','mr003','mr003'],
                    '语文':[110,105,109,110,108],
                    '数学':[105,88,120,123,119],
                    '英语':[99,115,130,109,128]})

df_merge=pd.merge(df1,df2)
print(df_merge)

2.数据合并(concat()方法)

1.相同字段的表首尾相连

dfs = [df1,df2,df3]
result = pd.concat(dfs)

如果需要标记源数据来自于哪张表,可以使用:

result = pd.concat(dfs, keys=['第一张表','第二张表','第三张表']) 

2.横向表合并(行对齐)

用于数据列名不一致,缺失的数据使用Nan填充 。其中axis=1代表行合并。

result = pd.concat([df1,df4],axis=1)

3.交叉合并

交叉合并需要加上join参数,如值为inner,结果为两张表的交集;如果值为outer,结果为两张表的并集。 

result = pd.concat([df1,df4],axis=1,join='inner')

4.指定表对其数据(行对齐)

如果指定参数join_axes,就可以指定根据哪张表来对齐数据。如下述代码,根据df4表对其,结果表的行术和df4的行术一致,在此基础上拼接df1表。

result = pd.concat([df1,df4],axis=1,join_axes[df4.index])

到此这篇关于Pandas数据合并的两种实现方法的文章就介绍到这了,更多相关Pandas数据合并内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中的list.sort()方法和函数sorted(list)

    Python中的list.sort()方法和函数sorted(list)

    这篇文章主要介绍了Python中的list.sort()方法和函数sorted(list),sort()是列表的方法,修改原列表使得它按照大小排序,没有返回值,返回None
    2022-08-08
  • python写入已存在的excel数据实例

    python写入已存在的excel数据实例

    下面小编就为大家分享一篇python写入已存在的excel数据实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • VSCode2022配置Python3.9.6的详细教程

    VSCode2022配置Python3.9.6的详细教程

    这篇文章主要介绍了VSCode2022配置Python3.9.6教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Python画图练习案例分享

    Python画图练习案例分享

    这篇文章主要介绍了Python画图练习案例分享,文章基于Python实现各种画图,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-07-07
  • Python 私有属性和私有方法应用场景分析

    Python 私有属性和私有方法应用场景分析

    这篇文章主要介绍了Python 私有属性和私有方法应用场景分析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • python多线程高级锁condition简单用法示例

    python多线程高级锁condition简单用法示例

    这篇文章主要介绍了python多线程高级锁condition简单用法,结合实例形式分析了condition对象常用方法及相关使用技巧,需要的朋友可以参考下
    2019-11-11
  • Python使用QQ邮箱发送Email的方法实例

    Python使用QQ邮箱发送Email的方法实例

    实际开发过程中使用到邮箱的概率很高,那么如何借助python使用qq邮箱发送邮件呢?正好最近工作遇到这个需求,所以想着把方法分享出来方便大家,所以这篇文章主要介绍了Python使用QQ邮箱发送Email的实现方法,需要的朋友可以参考。
    2017-02-02
  • Pygame实战之实现扎气球游戏

    Pygame实战之实现扎气球游戏

    这篇文章主要为大家介绍了利用Python中的Pygame模块实现的一个扎气球游戏,文中的示例代码讲解详细,对我们了解Pygame模块有一定的帮助,感兴趣的可以学习一下
    2021-12-12
  • 5行Python代码实现图像分割的步骤详解

    5行Python代码实现图像分割的步骤详解

    这篇文章主要介绍了5行Python代码实现图像分割的步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • python time模块计算时间之间的差距(练习题)

    python time模块计算时间之间的差距(练习题)

    这篇文章主要介绍了python time模块计算时间之间的差距,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05

最新评论