欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Merge函數(shù)原理及用法解析

 更新時間:2020年09月16日 14:23:05   作者:秋天中的一片葉  
這篇文章主要介紹了Python Merge函數(shù)原理及用法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

Merge函數(shù)的用法

簡單來說Merge函數(shù)相當(dāng)于Excel中的vlookup函數(shù)。當(dāng)我們對2個表進行數(shù)據(jù)合并的時候需要通過指定兩個表中相同的列作為key,然后通過key匹配到其中要合并在一起的values值。

然后對于merge函數(shù)在Pandas中分為1vs1, 多(m)vs1,以及多(m)vs多(m)這三種場景。但是平時用的最多的往往是多vs1的這種場景。也就是說2個表中其中一個表作為key的值會出現(xiàn)重復(fù),而另外一個表作為key的值則是唯一。

這種場景也很好理解。例如:我們在生產(chǎn)環(huán)境中對服務(wù)器進行管理,一臺服務(wù)器上可能裝了各種各樣的軟件。那么如果是Excel表格來管理的話一個軟件就占用一行信息。而服務(wù)器名是相同的。所以一個相同的服務(wù)器名就會出現(xiàn)多個。

這臺服務(wù)器上安裝了多少個軟件,服務(wù)器名就會重復(fù)幾次,也就是最終有幾行。那么另外一個表要想讀取這臺服務(wù)器上安裝的所有軟件,那么服務(wù)器名就要作為key,各個軟件的信息則是value值。最終被讀取寫入的那張表的key只能唯一。

我們看下面這個案例,是真實多v1的案例。為了數(shù)據(jù)安全我只能把截圖分享給大家,并把服務(wù)器名遮掩希望大家諒解。

數(shù)據(jù)表1:作為查詢的總表,其中服務(wù)器名這列就是B列中的信息會出現(xiàn)重復(fù)

數(shù)據(jù)表2:下表為按照表1的key就是hostname來匹配,匹配到后按照表2的列名來讀取信息寫入到表2.這里同上因為服務(wù)器名敏感,所以也用馬賽克擋住了,忘諒解。

代碼演示:

1. 讀取表1,表2中的內(nèi)容,作為DataFrame賦值給變量

#%%

import pandas as pd

#讀取表1
df01 = pd.read_excel("./datas/new_all_datas.xlsx",
           header=5)
df01.head()

#%%

#讀取表2
df02 = pd.read_excel("./datas/new_software_InputSheet.xlsx")
df02

#%%

2. 通過merge函數(shù)合并兩個DataFrame。on代表指明拿什么作為key來進行匹配。how這里分為left,right,inner,outer等方式。這里left代表按照表1為主表進行合并。

#%%
#ホスト名作為key來匹配兩個表,相當(dāng)于vlookup函數(shù)
#how=left代表以left左表為主,這里則代表表二為左表
df03 = pd.merge(df02,df01,on="ホスト名",how="left")
df03

結(jié)果:合并結(jié)果如下。但是因為表1,表2中出現(xiàn)重復(fù)元素的列名,因此合并后Pandas會按照后綴,把相同列名按照_x,_y的方式生成多列。

3. 去除沒用的列并按照條件查詢想要的數(shù)據(jù). 下列需求是按照服務(wù)器名,找出對應(yīng)的"ソフトウェア名"也就是software名為Trend Micro的軟件以及"ソフトウェア製造元"software制造商為Symantec的所有行。

#%%
#因為表中有相同的列名因此自動后綴被加上了_y
#下面代表篩選查詢范圍,以及指定查詢值
df03 = df03.loc[:,["ホスト名","行番號","ソフトウェア區(qū)分_y","ソフトウェア名_y","ソフトウェアバージョン_y","ソフトウェア製造元_y"]]
df04 = df03[(df03["ソフトウェア名_y"]=="Trend Micro") | (df03["ソフトウェア製造元_y"]=="Symantec")]

#重新把列名設(shè)定換一下然后輸出
df04.columns = ["ホスト名","行番號","ソフトウェア區(qū)分","ソフトウェア名","ソフトウェアバージョン","ソフトウェア製造元"]
df04

結(jié)果:

4. 將數(shù)據(jù)導(dǎo)出到Excel文件

#%%

with pd.ExcelWriter("./datas/output_mergedatas.xlsx") as writer:
  df04.to_excel(writer,index=False)
  print("Done!!")

結(jié)果:當(dāng)然也可以直接導(dǎo)入到數(shù)據(jù)表2中去。我這里為了不破壞原表,因此作為新的Excel表導(dǎo)出了。

大家在日常業(yè)務(wù)中,如果遇到類似場景可以嘗試通過merge函數(shù)來合并您的數(shù)據(jù)。還可以結(jié)合loc切片以及寫下來要發(fā)表的pivot,pivot_table透視表來更加豐富的對數(shù)據(jù)進行清洗。

總體而言用慣了Pandas后會感覺相比Excel中的函數(shù)及宏。Pandas會更加的靈活也更加的強大。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • IronPython連接MySQL的方法步驟

    IronPython連接MySQL的方法步驟

    這篇文章主要介紹了IronPython連接MySQL的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Pandas數(shù)據(jù)結(jié)構(gòu)中Series屬性詳解

    Pandas數(shù)據(jù)結(jié)構(gòu)中Series屬性詳解

    本文主要介紹了Pandas數(shù)據(jù)結(jié)構(gòu)中Series屬性詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • python miniWeb框架搭建過程詳解

    python miniWeb框架搭建過程詳解

    這篇文章主要介紹了python miniWeb框架搭建,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • python 實現(xiàn)調(diào)用子文件下的模塊方法

    python 實現(xiàn)調(diào)用子文件下的模塊方法

    今天小編就為大家分享一篇python 實現(xiàn)調(diào)用子文件下的模塊方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python入門教程(三十一)Python的Try和Except

    Python入門教程(三十一)Python的Try和Except

    這篇文章主要介紹了Python入門教程(三十一)Python的Try Except,當(dāng)我們調(diào)用Python并發(fā)生錯誤或異常時,通常會停止并生成錯誤消息,
    可以使用try語句處理這些異常,需要的朋友可以參考下
    2023-05-05
  • Python實現(xiàn)獲取照片拍攝日期并重命名的方法

    Python實現(xiàn)獲取照片拍攝日期并重命名的方法

    這篇文章主要介紹了Python實現(xiàn)獲取照片拍攝日期并重命名的方法,涉及Python針對文件屬性及文件名相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • 使用pandas計算環(huán)比和同比的方法實例

    使用pandas計算環(huán)比和同比的方法實例

    同比和環(huán)比都是為了顯示數(shù)據(jù)的變化速度,但是基數(shù)不同,同比側(cè)重長期數(shù)據(jù)趨勢變化,環(huán)比側(cè)重于短期內(nèi)數(shù)據(jù)趨勢變化,下面這篇文章主要給大家介紹了關(guān)于如何使用pandas計算環(huán)比和同比的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 最新評論