值得收藏,Python 合并数据的5个函数

前几天在一个群里面,看到一位朋友,说到自己的阿里面试,被问了一些关于pandas的使用。其中一个问题是:pandas中合并数据的5中方法

今天借着这个机会,就为大家盘点一下pandas中合并数据的5个函数。但是对于每个函数,我这里不打算详细说明,具体用法大家可以参考pandas官当文档。喜欢记得收藏、关注、点赞。

【注】完整代码、数据、技术交流,文末提供

  • join主要用于基于索引的横向合并拼接;

  • merge主要用于基于指定列的横向合并拼接;

  • concat可用于横向和纵向合并拼接;

  • append主要用于纵向追加;

  • combine可以通过使用函数,把两个DataFrame按列进行组合。

join

join是基于索引的横向拼接,如果索引一致,直接横向拼接。如果索引不一致,则会用Nan值填充。

索引一致

x = pd.DataFrame({
    
    'A': ['A0', 'A1', 'A2'],
                     'B': ['B0', 'B1', 'B2']},
                    index=[0, 1, 2])
y = pd.DataFrame({
    
    'C': ['C0', 'C2', 'C3'],
                      'D': ['D0', 'D2', 'D3']},
                    index=[0, 1, 2])
x.join(y)

结果如下:

图片

索引不一致

x = pd.DataFrame({
    
    'A': ['A0', 'A1', 'A2'],
                     'B': ['B0', 'B1', 'B2']},
                    index=[0, 1, 2])
y = pd.DataFrame({
    
    'C': ['C0', 'C2', 'C3'],
                      'D': ['D0', 'D2', 'D3']},
                    index=[1, 2, 3])
x.join(y)

结果如下:

图片

merge

merge是基于指定列的横向拼接,该函数类似于关系型数据库的连接方式,可以根据一个或多个键将不同的DatFrame连接起来。该函数的典型应用场景是,针对同一个主键存在两张不同字段的表,根据主键整合到一张表里面。

  • 可以指定不同的how参数,表示连接方式,有inner内连、left左连、right右连、outer全连,默认为inner;
x = pd.DataFrame({
    
    '姓名': ['张三', '李四', '王五'],
                     '班级': ['一班', '二班', '三班']})
y = pd.DataFrame({
    
    '专业': ['统计学', '计算机', '绘画'],
                      '班级': ['一班', '三班', '四班']})

pd.merge(x,y,how="left")

结果如下:

图片

concat

concat函数既可以用于横向拼接,也可以用于纵向拼接。

纵向拼接

x = pd.DataFrame([['Jack','M',40],['Tony','M',20]], columns=['name','gender','age'])
y = pd.DataFrame([['Mary','F',30],['Bob','M',25]], columns=['name','gender','age'])
z = pd.concat([x,y],axis=0)

结果如下:

图片

横向拼接

x = pd.DataFrame({
    
    '姓名': ['张三', '李四', '王五'],
                     '班级': ['一班', '二班', '三班']})
y = pd.DataFrame({
    
    '专业': ['统计学', '计算机', '绘画'],
                      '班级': ['一班', '三班', '四班']})
z = pd.concat([x,y],axis=1)
z

结果如下:

图片

append

append主要用于纵向追加数据。

x = pd.DataFrame([['Jack','M',40],['Tony','M',20]], columns=['name','gender','age'])
y = pd.DataFrame([['Mary','F',30],['Bob','M',25]], columns=['name','gender','age'])
x.append(y)

结果如下:

图片

combine

conbine可以通过使用函数,把两个DataFrame按列进行组合。

x = pd.DataFrame({
    
    "A":[3,4],"B":[1,4]})
y = pd.DataFrame({
    
    "A":[1,2],"B":[5,6]})
x.combine(y,lambda a,b:np.where(a>b,a,b))

结果如下:

图片

注:上述函数,用于返回对应位置上的最大值。

推荐文章

技术交流

完整代码、数据获取,可以找我来要

技术交流、求职内推、干货汇总、与 3000+来自阿里、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

目前开通了技术交流群,群友已超过3000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
  • 方式②、添加微信号:dkl88191,备注:来自CSDN
  • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_34160248/article/details/124624795