首页 > 其他分享 >Pandas碎碎念1 - Dataframe 合并之 join,concat,merge,append

Pandas碎碎念1 - Dataframe 合并之 join,concat,merge,append

时间:2024-06-07 10:00:19浏览次数:12  
标签:Src join NaN df1 Mid Dataframe df2 merge

最近做的几个项目都要经常使用pandas操作excel,中间也遇到了不少坑,简单记录一下吧。套用骁哥的一句话,让自己变得更强!

Pandas中有几种常见的合并dataframe的方法,join,concat,merge,append。下面来尝试一下:

首先来做一些测试数据

    data1 = {'Src': [1, 2, 3, 4],
             'Mid': [1, 2, 3, 4]
             }
    data2 = {'Dst': [4, 5, 6],
             'Mid': [1, 2, 3]
             }
    data3 = {'Dst': [4, 5, 6]
             }
    data4 = {'Dst1': [7, 8, 9]
             }
    df1 = pd.DataFrame(data1)
    df2 = pd.DataFrame(data2)
    df3 = pd.DataFrame(data3)
    df4 = pd.DataFrame(data4)

1,join函数

join函数很简单,就是两个dataframe按index合并 (不可以有相同的列名,否则会报错)。使用方法:df1.join(df2)。默认是left关联

df1.join(df4,how='left')
   Src  Mid  Dst1
0    1    1   7.0
1    2    2   8.0
2    3    3   9.0
3    4    4   NaN
df1.join(df4,how='right')
   Src  Mid  Dst1
0    1    1     7
1    2    2     8
2    3    3     9

2,concat函数

concat函数实际上是两个dataframe拼接在一起,跟index,列名都无关。使用方法pd.concat([df1,df2])。从下面的例子可以看到,即使df1,df2有相同的列mid,但是也不会通过列名合并,只是简单的将它们拼接到一起

pd.concat([df1,df2])
   Src  Mid  Dst
0  1.0    1  NaN
1  2.0    2  NaN
2  3.0    3  NaN
3  4.0    4  NaN
0  NaN    1  4.0
1  NaN    2  5.0
2  NaN    3  6.0
pd.concat([df1,df3])
   Src  Mid  Dst
0  1.0  1.0  NaN
1  2.0  2.0  NaN
2  3.0  3.0  NaN
3  4.0  4.0  NaN
0  NaN  NaN  4.0
1  NaN  NaN  5.0
2  NaN  NaN  6.0

 

3,merge函数

merge函数要求两个dataframe有相同的列,merge函数有多种写法(如下)。如果有多个相同的列时,也可以通过关键字on来定义使用哪列作为连接字段:df1.merge(df2,how='left',on='Mid')

pd.merge(df1,df2)
   Src  Mid  Dst
0    1    1    4
1    2    2    5
2    3    3    6
df1.merge(df2)
   Src  Mid  Dst
0    1    1    4
1    2    2    5
2    3    3    6
df1.merge(df2,how='right')
   Src  Mid  Dst
0    1    1    4
1    2    2    5
2    3    3    6
df1.merge(df2,how='left')
   Src  Mid  Dst
0    1    1  4.0
1    2    2  5.0
2    3    3  6.0
3    4    4  NaN

 

4,append函数

append函数和join函数很像,join函数是横向使用index关联,append是使用column列名纵向关联。

df1.append(df2)
   Src  Mid  Dst
0  1.0    1  NaN
1  2.0    2  NaN
2  3.0    3  NaN
3  4.0    4  NaN
0  NaN    1  4.0
1  NaN    2  5.0
2  NaN    3  6.0
df1.append(df3)
   Src  Mid  Dst
0  1.0  1.0  NaN
1  2.0  2.0  NaN
2  3.0  3.0  NaN
3  4.0  4.0  NaN
0  NaN  NaN  4.0
1  NaN  NaN  5.0
2  NaN  NaN  6.0

 

相信这几种dataframe合并方式,总有一款适合你

 

标签:Src,join,NaN,df1,Mid,Dataframe,df2,merge
From: https://www.cnblogs.com/kykstyle/p/17846270.html

相关文章

  • 【MySQL】LEFT JOIN 踩坑
     一、问题发现:主查询功能发现两条一样的记录,但是审批状态不一样,一个已通过,一个待审核 主表付款表:CREATETABLE`pur_or_payment`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'系统编码初始值为“1”',`pa_code`varchar(32)NOTNULLCOMMENT'付款编号',......
  • python --数据分析-numpy-pandas-series对象和dataframe对象
    Python作为当下最为流行的编程语言之一,可以独立完成数据分析的各种任务功能强大,在数据分析领域里有海量开源库,并持续更新是当下热点——机器学习/深度学习领域最热门的编程语言除数据分析领域外,在爬虫,Web开发等领域均有应用常用Python数据分析开源库介绍NumPyNumP......
  • DataFrame数据的处理多种方法
    在Python中,DataFrame是pandas库中的一个核心数据结构,用于存储和操作二维的、大小可变且可以包含异质类型列的表格型数据。处理DataFrame数据时,你可以执行各种操作,包括数据清洗、转换、聚合、排序、筛选等。以下是一些常见的DataFrame数据处理方法:1.读取数据使用pandas的r......
  • git merge vs git rebase
      gitrebase命令经常被认为是Git巫术,初学者应该远离它,但它实际上可以让开发团队在使用时更加轻松。在本文中,我们将gitrebase与相关gitmerge命令进行比较。概念首先要理解的是gitrebase和gitmerge解决了同样的问题。这两个命令都旨在将更改从一个分支集成到另一个分支-......
  • sleep()、wait()、join()、yield()之间的的区别
    这里提到的sleep()、wait()、join()和yield()是多线程编程中常用的几个方法,它们之间有一些区别:1.sleep():-sleep()方法是Thread类的静态方法,用于让当前线程暂停执行指定的时间。-调用sleep()方法时,当前线程会暂停执行,但不会释放对象锁。-sleep()只会暂停当前......
  • DataFrame基本操作笔记
    目录DataFrameDataFrame特点:创建实例-使用列表创建实例-使用字典创建实例-使用NumPy数组创建实例-使用Series创建实例-使用ndarrays创建返回数据DataFrame的属性和方法访问DataFrame元素访问行:使用行的标签和.loc[]访问。修改DataFrame添......
  • JAVA使用ForkJoinPool实现子任务拆分进行数值累加代码示例
      SumTask.javaimportjava.util.concurrent.RecursiveTask;/***定义任务和拆分逻辑*RecursiveTask<Long>这个是有返回值的*如果不需要返回值可以用RecursiveAction*/publicclassSumTaskextendsRecursiveTask<Long>{/***累加的开始值......
  • 计算机系统结构之FORK和JOIN
    程序语言中用FORK语句派生并行任务,用JOIN语句对多个并发任务汇合。FORK语句的形式为FORKm,其中m为新领程开始的标号。JOIN语句的形式为JOINn,其中n为并发进程的个数。例1:给定算术表达式Z=E+A*B*C/D+F经并行编译得到如下程序:S1G=A*BS2H=C/DS3I=G*HS4J=E+FS5Z=I+J......
  • MapReduce学习之MapJoin案例实现
    MapReduce学习之MapJoin案例实现1.当前main方法所在的入口类packagecom.shujia.mr.mapJoin;importcom.shujia.mr.reduceJoin.ReduceJoin;importcom.shujia.mr.reduceJoin.ReduceJoinMapper;importcom.shujia.mr.reduceJoin.ReduceJoinReducer;importorg.apache.......
  • SparkSQL编程-DataFrame
    SparkSession在老的版本中,SparkSQL提供两种SQL查询起始点:一个叫SQLContext,用于Spark自己提供的SQL查询;一个叫HiveContext,用于连接Hive的查询。从2.0开始,SparkSession作为Spark最新的SQL查询起始点,实质上是SQLContext和HiveContext的组合,所以在SQLContext......