concat()

我们可以通过DataFrame或Series类型的concat方法,来进行连接操作,连接时,会根据索引进行对齐。

  • axis:指定连接轴,默认为0(上下)。【axis=0/1】

  • join:指定连接方式,默认为外连接。【join='outer':并集,join='inner':交集】

  • keys:可以用来区分不同的数据组。形成层级索引【这个稍微难理解一点】

  • join_axes:指定连接结果集中保留的索引。默认全部保留【如:join_axes=[df1.columns]】

  • ignore_index:忽略原来连接的索引,创建新的整数序列索引,默认为False。【ignore_index=True/False】

  • sort:concat之后,是否按照列索引排序,sort=True/False

df1=pd.DataFrame({"date":[2015,2016,2017,2018,2019],"x1":[2000,3000,5000,8000,10000],"x2":[np.nan,"d","d","c","c"]})
df2=pd.DataFrame({'date':[2017,2018,2019,2020],"y1":[1000,2000,3000,2000]})
# display(df1,df2)
df3=pd.concat([df1,df2],keys=["df1","df2"])
display(df3)
#索引层级索引元素时,先外再内
df3.loc["df2",3].loc["y1"]

append()

在对行进行连接时,也可以使用Series或DataFrame的append方法。append是concat的简略形式,只不过只能在axis=0上进行合并

df1=pd.DataFrame({"date":[2015,2016,2017,2018,2019],"x1":[2000,3000,5000,8000,10000],"x2":[np.nan,"d","d","c","c"]})
df2=pd.DataFrame({'date':[2017,2018,2019,2020],"y1":[1000,2000,3000,2000]})
# display(df1,df2)df3=df1.append(df2)
display(df3)

merge()

通过pandas或DataFrame的merge方法,可以进行两个DataFrame的连接,这种连接类似于SQL中对两张表进行的join连接。

  • how:指定连接方式。可以是inner, outer, left, right,默认为inner。
  • on 指定连接使用的列(该列必须同时出现在两个DataFrame中),默认使用两个DataFrame中的所有同名列进行连接。
  • left_on / right_on:指定左右DataFrame中连接所使用的列。
  • left_index / right_index:是否将左边(右边)DataFrame中的索引作为连接列,默认为False。
  • suffixes:当两个DataFrame列名相同时,指定每个列名的后缀(用来区分),默认为x与y。

df1=pd.DataFrame({"date":[2015,2016,2017,2018,2019],"x1":[2000,3000,5000,8000,10000],"x2":[np.nan,"d","d","c","c"]})
df2=pd.DataFrame({'date':[2017,2018,2019,2020],"y1":[1000,2000,3000,2000]})
# display(df1,df2)
df3=df1.merge(df2,how='left',on="date")
display(df3)

join()

与merge方法类似,但是默认使用索引进行连接。

  • how:指定连接方式。可以是inner, outer, left, right,默认为left。
  • on:设置当前DataFrame对象使用哪个列与参数对象的索引进行连接。
  • lsuffix / rsuffix:当两个DataFrame列名相同时,指定每个列名的后缀(用来区分),如果不指定,列名相同会产生错误。

join与merge类似,都是进行两张表的连接。不同点:

  • merge默认进行的内连接(inner),join默认进行的左外连接(left)。
  • 当出现同名字段(列索引)时,merge可以自动补后缀(_x, _y),但是join不会自动补后缀,而是会产生错误。
  • merge默认使用同名的列进行等值连接。join默认使用左右两表的索引进行连接。
  • merge中on参数,指定两张表中共同的字段,而join中on参数,仅指定左表中的字段(右表依然使用索引)。

merge与join侧重点不同,merge侧重的是使用字段进行连接,而join侧重的是使用索引进行连接。

df1=pd.DataFrame({"date":[2015,2016,2017,2018,2019],"x1":[2000,3000,5000,8000,10000],"x2":[np.nan,"d","d","c","c"]})
df2=pd.DataFrame({'date':[2017,2018,2019,2020],"y1":[1000,2000,3000,2000]})
# display(df1,df2)
df3=df1.join(df2,how='left',lsuffix='_x',rsuffix='_y')#根据索引对齐
display(df3)


数据分析与运营更多知识点关注博客,共同分享交流学习。

inner join 重复数据_pandas数据合并菜谱相关推荐

  1. pandas 分层取5个数据_Pandas数据可视化的9个要点「附案例」

    文末领取[数据可视化图表选择指南] 数据可视化可以让我们很直观的发现数据中隐藏的规律,察觉到变量之间的互动关系,可以帮助我们更好的给他人解释现象,做到一图胜千文的说明效果. 常见的数据可视化库有: m ...

  2. pandas 根据列名索引多列数据_Pandas 数据聚合与分组运算[groupby+apply]速查笔记

    利用Pandas将数据进行分组,并将各组进行聚合或自定义函数处理. Pandas中Groupby分组与聚合过程 导入模块 import pandas as pd 缩写 df表示Dataframe对象 ...

  3. python筛选csv数据_pandas数据筛选和csv操作的实现方法

    1. 数据筛选 a b c 0 0 2 4 1 6 8 10 2 12 14 16 3 18 20 22 4 24 26 28 5 30 32 34 6 36 38 40 7 42 44 46 8 4 ...

  4. left join 重复数据_Python数据分析整理小节

    一.数据读取 1.读写数据库数据 读取函数: pandas.read_sql_table(table_name, con, schema=None, index_col=None, coerce_fl ...

  5. sql server left join 重复数据原因图

    sql server left join 重复数据原因图     网购从这里开始 ( 物美价廉还等什么?!!! )

  6. pandas如何合并列表_Pandas数据合并与拼接的5种方法

    Pandas数据处理功能强大,可以方便的实现数据的合并与拼接,具体是如何实现的呢? 一.DataFrame.concat:沿着一条轴,将多个对象堆叠到一起 语法: concat(objs, axis= ...

  7. python数据框拼接_pandas数据拼接的实现示例

    一 前言 pandas数据拼接有可能会用到,比如出现重复数据,需要合并两份数据的交集,并集就是个不错的选择,知识追寻者本着技多不压身的态度蛮学习了一下下: 二 数据拼接 在进行学习数据转换之前,先学习 ...

  8. 15-Hbase深入理解数据读写流程、数据刷写、合并、切分和表设计原则

    8.6 HBase读写流程⭐️ 对于HBase框架,读比写慢(与其他框架相反) 8.6.1 公共流程(三层索引) 对于数据对应的Region位置在哪里的问题的提出 HBase中单表的数据量通常可以达到 ...

  9. Python 数据分析三剑客之 Pandas(八):数据重塑、重复数据处理与数据替换

    CSDN 课程推荐:<迈向数据科学家:带你玩转Python数据分析>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python ...

  10. update两个表中的同一字段的数据_用Python实现多个工作簿中的数据按列合并到同一个工作表中...

    1.需求描述 现在有三个工作表,如下: 在这里插入图片描述 并且每个工作表中的内容如下: 在这里插入图片描述 需要将这三个工作簿中的分数这一列合并到一起,最终实现效果如下图: 在这里插入图片描述 2. ...

最新文章

  1. 《DNS与BIND(第5版)》——7.6 保持一切平稳运行
  2. Mongoose源码剖析:Introduction and Installation
  3. Android的历史与花边
  4. python 爬虫实例 电影-Python爬虫教程-17-ajax爬取实例(豆瓣电影)
  5. Unity设置AppIcon方法
  6. php 字符串截取_网络安全WEB之PHP代码审计,攻防世界题目warmup
  7. leetcode 1486. 数组异或操作(位运算)
  8. LeetCode 1758. 生成交替二进制字符串的最少操作数(DP)
  9. 你在成长为一个优秀的程序员吗
  10. 【leetcode】最强边界条件
  11. zend studio 10 实现代码自动换行
  12. UE4 使用蓝图进行编辑器扩展
  13. 接入微信提现Api(企业付款到零钱--向微信用户个人付款)
  14. Matplotlib 绘制条形图
  15. 罗技的鼠标驱动试用感受
  16. JAV spi 和扩展方式
  17. 真的!!!两行css代码实现瀑布流,html,css最简单的瀑布流实现方式且没有缺点!...
  18. ssh端口转发(隧道技术)
  19. CDA LEVELⅠ2021新版模拟题二(附答案)
  20. 游戏数据分析用到的模型(二)留存率预估

热门文章

  1. haproxy 基础知识
  2. 设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛?...
  3. vue - 生命周期
  4. python map函数filter函数 day16
  5. SQL Server 日期+4位流水号
  6. SpringMVC前后台数据传递中Json格式的相互转换(前台显示格式、Json-lib日期处理)及Spring中的WebDataBinder浅析...
  7. jQuery对象和DOM对象的区别
  8. mysql从一个表中拷贝数据到另一个表中sql语句
  9. 64位电脑上安装MySQL进行MFC开发的相关问题
  10. Vector原理与基本使用