對於merge、join和concat三者的區別分析

2021-01-09 電子發燒友

1、從合併的方式看merge和join是一樣的,有left/right/inner/outer,而concat只有inner/outer兩種,因為merge和join參與合併的對象有左右區分,而concat第一個參數是多個dataframe組成的列表,沒有嚴格的左右區分,如果排除最後結果中列的順序的話,可以看成是一樣的。例:

import pandas as pd

from pandas import Series,DataFrame,Panel

df1 = DataFrame([['a','b'],['d','q'],['o','b'],['m','e']],index=['a','b','c','o'],columns=['number1','number2'])

df2 = DataFrame([['a','b'],['d','e'],['a','b'],['d','e']],columns=['col1','col2'],index=['f','a','g','c'])

print pd.concat([df1,df2],join='outer',axis=1)

print pd.concat([df2,df1],join='outer',axis=1)

2、merge合併的範圍最廣泛,可以合併左邊對象的索引/列和右邊對象的索引/列的四種組合;join次之,僅可以實現調用DataFrame的索引/列和參數DataFrame的索引的合併,也就是參數DataFrame的列不能參與合併;concat合併的範圍最小,只支持索引的合併,也就是說索引與索引的合併是三個函數共同的功能,例:

import pandas as pd

import numpy as np

from pandas import Series,DataFrame,Panel

df1 = DataFrame([['a','b'],['d','q'],['o','b'],['m','e']],index=['a','b','c','o'],columns=['number1','number2'])

df2 = DataFrame([['a','b'],['d','e'],['a','b'],['d','e']],columns=['col1','col2'],index=['f','a','g','c'])

print(pd.merge(df1,df2,left_index=True,right_index=True,how='outer'))

print(df1.join(df2,how='outer'))

print(pd.concat([df1,df2],join='outer',axis=1))

可以看出三個函數合併索引後輸出的結果是一樣的

number1 number2 col1 col2a       a       b    d    eb       d       q  NaN  NaNc       o       b    d    ef     NaN     NaN    a    bg     NaN     NaN    a    bo       m       e  NaN  NaN

number1 number2 col1 col2a       a       b    d    eb       d       q  NaN  NaNc       o       b    d    ef     NaN     NaN    a    bg     NaN     NaN    a    bo       m       e  NaN  NaN

number1 number2 col1 col2a       a       b    d    eb       d       q  NaN  NaNc       o       b    d    ef     NaN     NaN    a    bg     NaN     NaN    a    bo       m       e  NaN  NaN

3、concat和join的共同點是可以合併3個以上的對象,merge只合併兩個對象

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 如果你也基於pandas做數據分析,分享這幾個提高效率的小知識點
    本文基於數據分析庫pandas,分享我在工作中常常需要使用的幾個關於數據定位的常用語法以及幾個小知識點。01loc和iloc目前pandas的版本已經取消了ix和at等語法,推薦使用的是loc和iloc這兩種語法定位數據loc是location的縮寫,iloc是index_location的縮寫,前者是基於標籤(標籤是指通過列名或者索引名定位數據),後者是基於索引
  • 第5章 精通pandas合併操作(使用pandas進行數據分析,)
    本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】經微信公眾號授權轉載,如需轉載與原文作者聯繫文章目錄第5章 合併一、append與assign1. append方法2. assign方法二、combine與update1. comine方法2. update方法三、concat方法四、merge與join1. merge函數
  • 超詳細教程|pandas合併之append和concat(下)
    本篇文章主要介紹了pandas中對series和dataframe對象進行連接的方法:pd.append()和pd.concat(),文中通過示例代碼對這兩種方法進行了詳細的介紹,希望能對各位python小白的學習有所幫助。
  • 未明學院:7張思維導圖掌握數據分析關鍵庫pandas
    原創: 未明學院Pandas是一個強大的分析結構化數據的工具集;它基於numpy,用於數據分析和數據挖掘,同時也提供數據清洗功能。pandas與numpy一起構成了數據分析的基礎雙生庫。pandas概述02在使用pandas做數據分析的時候往往第一步就是將數據導入進來,比如csv或者excel格式的數據,下面這張圖就是我們讀取數據時候的方法和參數。數據讀入03、當多個數據表需要合併時可以按照下面的三種方式來進行,merge,join和concat。
  • 用Python做數據分析:Pandas常用數據查詢語法
    在使用Pandas之前,大多數數據分析師已經掌握了Excel和SQL,並且在剛上手Pandas時會經常習慣性想到「老辦法」。"
  • MySQL教程之concat以及group_concat的用法
    本文中使用的例子均在下面的資料庫表tt2下執行:一、concat()函數1、功能:將多個字符串連接成一個字符串。2、語法:concat(str1, str2,...)返回結果為連接參數產生的字符串,如果有任何一個參數為null,則返回值為null。
  • 烤箱、微波爐和蒸烤箱這三者之間的區別有哪些呢?
    也有很多人疑惑,微波爐、烤箱和蒸烤箱到底買哪個更加划算呢?這三者區別到底是什麼呢?今天我們就來分析一下微波爐、烤箱和蒸烤箱的區別吧。微波爐和烤箱的區別加熱效果不同:我們都知道微波爐加熱食物是微波穿透食物是產生熱能效應,通過一種高頻電磁波瞬間穿透食物,使食物內的極性分子振蕩,在相互碰撞時摩擦生熱,短時間內起到加熱食物的作用,使用過微波爐的人應該都知道,用微波爐熱東西快速方便。
  • mysql 資料庫group_concat函數的一些用法
    對於group_contact函數一般懂一點sql的人來說,並不算太陌生,它主要配合group by 使用,起著分組時,將涉及行的相應的欄位串聯成一個欄位如下表a:我們按照type分類,並將對應的名稱按逗號分隔保存為一個names欄位可以寫為:select type,group_concat(name) names from a group by
  • 技術科普|傳感器的靈敏度、解析度和精度三者之間有何區別?
    在現代工業生產尤其是自動化生產過程中,需要各種傳感器來監視和控制生產過程中的各個參數,使設備工作在正常狀態或最佳狀態,並使產品達到最好的質量。因此可以說,沒有眾多的優良的傳感器,現代化生產也就失去了基礎。要進行—個具體的測量工作,首先要考慮採用何種原理的傳感器,這需要分析多方面的因素之後才能確定。選型確定之後,就需要考慮傳感器的具體性能指標了。
  • HUMAnN2 --宏基因組代謝通路分析
    本系列課程前情回顧宏基因組分析00. 概述和分析環境的部署宏基因組分析01.
  • nginx中使用nginx-http-concat模塊合併靜態資源文件
    西崑雲這篇文章主要介紹了nginx中使用nginx-http-concat模塊合併靜態資源文件,用以加速網站的CSS、JS等靜態資源載入速度,需要的朋友可以參考下  首先了解一下 nginx-http-concat
  • 科普| ArcGIS常見的疊加操作分析情況匯總
    關於union、merge、append、dissolve區別1、union(合併疊加)要求輸入的要素必須是多邊形,即求得兩個及以上多邊形的併集,對輸入要素的屬性欄位沒有要求,輸出要素是所有輸入的屬性的集合。如下圖輸入三個要素麵,輸出要素麵為7個。
  • 具體的電路來分析電壓、電流和電阻三者之間的關係
    電阻是一個實實在在的物理元器件,通過歐姆定律我們可以知道,電壓、電流和電阻三者之間的關係,U=I*R。我們通過一個具體的電路來分析這三者之間的具體關係,請看下面的一張最簡單的電路圖。這個電路圖只有一個電源一個電阻和一些導線組成。當然這個電阻的阻值也可以通過用萬用表來直接測量。
  • 【oracle開發】wmsys.wm_concat介紹
    wmsys.wm_concat是一個聚合函數,其作用是將一列數據轉換成一行,也就是我們常用的行專列,但是該函數是一個undocument函數,所以不推薦大家使用這個函數。因為在後續的版本中還提不提供這個函數都不好說呢。