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

如何使用Python對(duì)Excel表格進(jìn)行拼接合并

 更新時(shí)間:2023年03月22日 15:55:07   作者:二十六夜.  
這篇文章主要介紹了Python處理EXCEL基礎(chǔ)操作篇3用Python對(duì)Excel表格進(jìn)行拼接合并,文中提供了解決思路和部分實(shí)現(xiàn)代碼,需要的朋友可以參考下

準(zhǔn)備工作

我準(zhǔn)備了兩個(gè)表格數(shù)據(jù),以此展示本期的表格的合并的工作。數(shù)據(jù)示例如下:

表格1

表格2

接著將這兩個(gè)表格的數(shù)據(jù)分別導(dǎo)入python中,導(dǎo)入代碼入下:

import pandas as pd
df1=pd.read_excel(r"D:\雜貨\展示數(shù)據(jù)1.xlsx",sheet_name='Sheet1')
df2=pd.read_excel(r"D:\雜貨\展示數(shù)據(jù)2.xlsx",sheet_name='Sheet1')

 具體的導(dǎo)入方法和以上使用到的pandas庫(kù)的安裝在前章我已有介紹,不再贅述,請(qǐng)轉(zhuǎn)至:

使用Python處理EXCEL基礎(chǔ)操作篇1在Python中導(dǎo)入EXCEL數(shù)據(jù)

本篇涉及到一些基礎(chǔ)的表格數(shù)據(jù)的概念,而對(duì)于“索引”的相關(guān)知識(shí)可以看之前寫(xiě)的“基礎(chǔ)操作篇2”,里面有相關(guān)的介紹,可以幫助理解“索引”的含義。相關(guān)可轉(zhuǎn)至以下連接:

使用Python處理EXCEL基礎(chǔ)操作篇2Python對(duì)EXCEL數(shù)據(jù)的預(yù)處理

一、橫向拼接

1.1 一般拼接

首先我們先看一下合并前的表格1和表格2的數(shù)據(jù)樣式:

 這兩個(gè)表格存在公共列,為列索引為“學(xué)號(hào)”的那一列。

合并代碼如下:

merge_1=pd.merge(df1,df2)#df1與df2分別為要合并的兩個(gè)表格
print(merge_1)

此時(shí)程序會(huì)自己尋找兩個(gè)表的公共列,依照公共列進(jìn)行拼接。(公共列:有相同的列)

 合并后的數(shù)據(jù)如上圖所示。

1.2 指定鍵進(jìn)行拼接,即指定某一列作為兩個(gè)表的連接依據(jù)。

1.2.1 多對(duì)一

多對(duì)一的情況下的列表數(shù)據(jù)大致為一下形式:

 可以看到,上面為列表1,下面為列表2,列表1的“學(xué)號(hào)”那一列的數(shù)據(jù)都是“唯一的”,即分別只有一個(gè)100,101,102,103,沒(méi)有重復(fù)值;而在列表2中,“學(xué)號(hào)”那一列的數(shù)據(jù)就有重復(fù)值,即有兩個(gè)100,101等。這種情況下,將列表2合并到列表1中就叫作多對(duì)一的合并。

合并代碼如下:

merge_2=pd.merge(df1,df2,on="學(xué)號(hào)")#on="學(xué)號(hào)"即是說(shuō)依照學(xué)號(hào)那一列進(jìn)行合并
print(merge_2)

1.2.2 多對(duì)多

多對(duì)多情況下的數(shù)據(jù)樣式如下:

 由上圖可知,多對(duì)多即是列表1與列表2中“學(xué)號(hào)”列都有重復(fù)項(xiàng)。合并代碼如下:

merge_3=pd.merge(df1,df2)
print(merge_3)

 合并后的表格如下:

1.2.3 用on來(lái)指定多個(gè)連接鍵

原數(shù)據(jù)樣式如下:

 上面為表格1,下面為表格2(即df1和df2)

由1.2.1一處已經(jīng)了解到,可以通過(guò)on="學(xué)號(hào)"來(lái)指定某個(gè)連接鍵,而當(dāng)需要指定多個(gè)連接鍵時(shí),同樣也是使用on來(lái)實(shí)現(xiàn)。代碼如下:

merge_4=pd.merge(df1,df2,on=['姓名','學(xué)號(hào)'])#語(yǔ)法為on=[]
print(merge_4)

合并后的列表如下:

1.2.4 指定左右連接鍵

合并前的數(shù)據(jù)樣式為:

 以上為兩個(gè)待拼接的表格。

當(dāng)要連接的兩個(gè)表之間沒(méi)有公共列時(shí)(實(shí)際值一樣,但列名不同),則可通過(guò)左右連接鍵拼接兩個(gè)表。其中l(wèi)eft_on用來(lái)指明左表的連接鍵的列名,right_on用來(lái)指明右表的連接鍵的列名。具體看如下示,代碼如下:

merge_5=pd.merge(df1,df2,left_on="編號(hào)",right_on='學(xué)號(hào)')
print(merge_5)

執(zhí)行代碼,合并后的列表如下:

1.2.5 索引當(dāng)作連接鍵

從上面的表格數(shù)據(jù)中可以看到,其索引列為最左邊的那幾個(gè)數(shù)字,0,1,2,3……。但有時(shí)候我們會(huì)需要用某一列的內(nèi)容作為索引列,此時(shí)可以通過(guò)以下代碼將索引列替換掉:

change=df1.set_index("編號(hào)")
print(change)

轉(zhuǎn)換索引列前的列表樣式如下:

 轉(zhuǎn)換之后索引列的列表樣式如下:

不難發(fā)現(xiàn)最左邊的那一列的索引有所不同。(注意:此時(shí)待合并的列表1與列表2的索引已經(jīng)不同了)

接下來(lái)我們可以通過(guò)以下代碼依據(jù)索引來(lái)進(jìn)行列表的合并:

merge_6=pd.merge(df1,df2,left_index=True,right_index=True)
print(merge_6)

合并后的列表樣式如下:

1.3 連接的方式

1.3.1 內(nèi)連接(inner)

內(nèi)連接就是取兩個(gè)表中的共同擁有的內(nèi)容,而若不是共同擁有的內(nèi)容的話(huà),在內(nèi)連接后形成的新的表格會(huì)將非共同擁有的內(nèi)容“刪除”,只保留共同擁有的內(nèi)容。

合并前的兩個(gè)列表樣式如下:

 內(nèi)連接的代碼如下:

merge_7=pd.merge(df1,df2,on='學(xué)號(hào)',how='inner')
print(merge_7)

 合并后的表格如下:

1.3.2 左連接(left)

以左表為基礎(chǔ),右表往左表上拼接。當(dāng)遇到左(右)表有,而右(左)表沒(méi)有的內(nèi)容,空缺的部分則會(huì)以NaN的方式填充。

合并前的兩個(gè)列表樣式如下:

 合并代碼如下:

merge_8=pd.merge(df1,df2,on='學(xué)號(hào)',how='left')
print(merge_8)

 合并后表格如下:

1.3.3 右連接(right)

以右表為基礎(chǔ),左表往右表上拼接。其他與左連接同理。

1.3.4 外連接(outer)

取兩個(gè)表的并集。

合并代碼如下:

merge_9=pd.merge(df1,df2,on='學(xué)號(hào)',how='outer')
print(merge_9)

 合并前表格如下:

合并后表格如下:

二、縱向拼接

2.1 普通合并

合并前表格如下:

代碼如下:

merge_x=pd.concat([df1,df2])
print(merge_x)

合并后表格如下:

注意:縱向拼接的concat中使用的是列表,和merge的形式有所不同。

索引設(shè)置:普通合并的方法中,合并后的表格是保留原索引的,如上圖所,編號(hào)處的數(shù)字索引是重復(fù)的。而為了解決這個(gè)問(wèn)題,我們通常會(huì)需要對(duì)索引進(jìn)行設(shè)置。

合并代碼如下:

merge_x=pd.concat([df1,df2],ignore_index=True)
print(merge_x)

合并后表格如下:

通過(guò)ignore_index=True設(shè)置的拼接表格后,可以發(fā)現(xiàn)最左邊的編號(hào)索引編程了順序數(shù)字。

2.2 重疊數(shù)據(jù)的合并

在未處理重疊數(shù)據(jù)的合并形式下,如果兩個(gè)表格中出現(xiàn)相同的數(shù)據(jù)內(nèi)容,那么在合并后的新表格中會(huì)出現(xiàn)多條數(shù)據(jù)重復(fù)的情況,為解決這個(gè)問(wèn)題,我們可以進(jìn)行如下處理:

合并前的表格:

 通過(guò)以下代碼合并:

merge_y=pd.concat([df1,df2],ignore_index=True).drop_duplicates()
print(merge_y)

合并后的表格如下:

此時(shí)程序會(huì)自動(dòng)地將重復(fù)項(xiàng)合二為一。從合并前后的表格對(duì)比可知,合并前有兩個(gè)“王五”的內(nèi)容,合并后兩個(gè)“王五”合二為一。

三、整合代碼

import pandas as pd
 
df1=pd.read_excel(r"D:\雜貨\展示數(shù)據(jù)1.xlsx",sheet_name='Sheet1')
df2=pd.read_excel(r"D:\雜貨\展示數(shù)據(jù)2.xlsx",sheet_name='Sheet1')
print(df1)
print(df2)
 
merge_1=pd.merge(df1,df2)#一般橫向拼接
print(merge_1)
 
merge_2=pd.merge(df1,df2,on="學(xué)號(hào)")#指定連接鍵
print(merge_2)
 
merge_3=pd.merge(df1,df2)
print(merge_3)
 
merge_4=pd.merge(df1,df2,on=['姓名','學(xué)號(hào)'])#指定多個(gè)連接鍵
print(merge_4)
 
merge_5=pd.merge(df1,df2,left_on="編號(hào)",right_on='學(xué)號(hào)')#指定左右連接鍵
print(merge_5)
 
change=df1.set_index("編號(hào)")#重置索引
print(change)
merge_6=pd.merge(df1,df2,left_index=True,right_index=True)#依照索引拼接
print(merge_6)
 
merge_7=pd.merge(df1,df2,on='學(xué)號(hào)',how='inner')#內(nèi)連接
print(merge_7)
 
merge_8=pd.merge(df1,df2,on='學(xué)號(hào)',how='left')#左連接
print(merge_8)
 
merge_9=pd.merge(df1,df2,on='學(xué)號(hào)',how='outer')#外連接
print(merge_9)
 
merge_x=pd.concat([df1,df2],ignore_index=True)#一般縱向拼接
print(merge_x)
 
merge_y=pd.concat([df1,df2],ignore_index=True).drop_duplicates()#縱向拼接并重置索引
print(merge_y)

到此這篇關(guān)于Python處理EXCEL基礎(chǔ)操作篇3用Python對(duì)Excel表格進(jìn)行拼接合并的文章就介紹到這了,更多相關(guān)Python處理EXCEL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 提升Python編碼能力的3個(gè)重要概念

    提升Python編碼能力的3個(gè)重要概念

    這篇文章主要給大家分享的是提升Python編碼能力的3個(gè)重要概念,圍繞提升Python編碼的相關(guān)自資料上下文管理器、類(lèi)型提示、淺拷貝和深拷貝等內(nèi)容展開(kāi)文章,需要的小伙伴可以參考一下
    2022-02-02
  • python自動(dòng)生成sql語(yǔ)句的腳本

    python自動(dòng)生成sql語(yǔ)句的腳本

    這篇文章主要介紹了python自動(dòng)生成sql語(yǔ)句的腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • python實(shí)現(xiàn)音樂(lè)播放和下載小程序功能

    python實(shí)現(xiàn)音樂(lè)播放和下載小程序功能

    這篇文章主要介紹了python實(shí)現(xiàn)音樂(lè)播放和下載小程序功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python入門(mén)教程(五)Python變量的用法

    Python入門(mén)教程(五)Python變量的用法

    這篇文章主要介紹了Python入門(mén)教程(五)Python變量的用法,Python是一門(mén)非常強(qiáng)大好用的語(yǔ)言,也有著易上手的特性,本文為入門(mén)教程,需要的朋友可以參考下
    2023-04-04
  • Python內(nèi)置函數(shù)的用法實(shí)例教程

    Python內(nèi)置函數(shù)的用法實(shí)例教程

    這篇文章主要介紹了Python內(nèi)置函數(shù)的用法,包括求絕對(duì)值的abs()函數(shù)及數(shù)值類(lèi)型轉(zhuǎn)換函數(shù)等,需要的朋友可以參考下
    2014-09-09
  • Python處理CSV與List的轉(zhuǎn)換方法

    Python處理CSV與List的轉(zhuǎn)換方法

    下面小編就為大家分享一篇Python處理CSV與List的轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python中列表(list)和元組(tuple)的深入講解

    python中列表(list)和元組(tuple)的深入講解

    這篇文章主要給大家介紹了關(guān)于python中列表(list)和元組(tuple)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python如何解除一個(gè)裝飾器

    Python如何解除一個(gè)裝飾器

    這篇文章主要介紹了Python如何解除一個(gè)裝飾器,幫助大家更好的理解和學(xué)習(xí)Python裝飾器,感興趣的朋友可以了解下
    2020-08-08
  • Python基礎(chǔ)學(xué)習(xí)之條件控制語(yǔ)句小結(jié)

    Python基礎(chǔ)學(xué)習(xí)之條件控制語(yǔ)句小結(jié)

    如果我需要設(shè)置一個(gè)死循環(huán),然后靠條件來(lái)終止,怎么辦?一個(gè)很簡(jiǎn)單的問(wèn)題,但是我卻沒(méi)有說(shuō),這一篇本應(yīng)該在分支控制語(yǔ)句里面的,現(xiàn)在只能拿出來(lái)水文再寫(xiě)一篇了,需要的朋友可以參考下
    2021-05-05
  • VsCode終端激活anconda環(huán)境問(wèn)題解決

    VsCode終端激活anconda環(huán)境問(wèn)題解決

    本文主要介紹了VsCode終端激活anconda環(huán)境問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01

最新評(píng)論