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

Pandas實(shí)現(xiàn)數(shù)據(jù)拼接的操作方法詳解

 更新時(shí)間:2022年04月20日 09:32:35   作者:Mr數(shù)據(jù)楊  
Python處理大規(guī)模數(shù)據(jù)集的時(shí)候經(jīng)常需要使用到合并、鏈接的方式進(jìn)行數(shù)據(jù)集的整合,本文為大家主要介紹了.merge()、?.join()?和?.concat()?三種方法,感興趣的可以了解一下

數(shù)據(jù)科學(xué)領(lǐng)域日常使用 Python 處理大規(guī)模數(shù)據(jù)集的時(shí)候經(jīng)常需要使用到合并、鏈接的方式進(jìn)行數(shù)據(jù)集的整合,其中應(yīng)用的數(shù)據(jù)類型包括 Series 和 DataFrame,可以使用的方法也很多,比如本文中介紹的 .merge()、 .join() 和 .concat() 三種方法,進(jìn)行拼接處理后的數(shù)據(jù)集可以發(fā)揮最大的用途。

merge 操作

.merge() 方法是用于組合通用列或索引上的數(shù)據(jù),這個(gè)方法有點(diǎn)類似于 MySQL 中的 join 操作,可以實(shí)現(xiàn)左拼接、右拼接、全連接等操作。

通過(guò)關(guān)鍵字的索引進(jìn)行拼接,實(shí)現(xiàn)多對(duì)一、一對(duì)多、多對(duì)多(笛卡爾乘積)連接。

merge 中參數(shù)解釋:

  • how:定義合并方式,選擇參數(shù)有 『inner』,『outer』, 『left’』,『right』。
  • on:定義2個(gè) DataFrame 中都必須包含的列用于連接(索引鍵)。
  • left_on 和 right_on:指定要合并的左側(cè)或右側(cè)對(duì)象中存在的列或索引。
  • left_index 和 right_index:默認(rèn)為 False,設(shè)置為以索引列作為合并基準(zhǔn)。
  • suffixes:字符串元組,用于附加到不是合并鍵的相同列名。

merge 拼接方式

一張圖就能看明白不同關(guān)鍵字參數(shù) merger 的方式。

merge 舉例

數(shù)據(jù)讀取

我們要進(jìn)行勢(shì)力所屬和人物直接關(guān)系的拼接操作,讀取的數(shù)據(jù)包括下面的2個(gè)列表,并將 人物歷史登入數(shù)據(jù) 中沒(méi)有勢(shì)力的數(shù)據(jù)剔除。

import pandas as pd
country  = pd.read_excel("Romance of the Three Kingdoms 13/勢(shì)力列表.xlsx")
people = pd.read_excel("Romance of the Three Kingdoms 13/人物歷史登入數(shù)據(jù).xlsx")

# 剔除不包含的勢(shì)力數(shù)據(jù),即武將在野的狀態(tài)
people = people[people["勢(shì)力"]!="-"]

country.head()

people.head()

內(nèi)部聯(lián)接

使用 merge 默認(rèn)參數(shù)可以直接進(jìn)行內(nèi)部連接,匹配兩個(gè)DataFrame交集的結(jié)果。

將人物和所屬勢(shì)力進(jìn)行一個(gè)拼接,這里我們?nèi)〉氖沁@個(gè)人物最終歸屬的勢(shì)力,即改人物數(shù)據(jù)聚合后的最后一條數(shù)據(jù)信息。

people_new = people.groupby('名前').nth(-1)
people_new["名前"] = people_new.index
people_new.reset_index(drop=True,inplace=True)
people_new

merge 中DataFrame的順序決定了拼接結(jié)果的順序。

inner_merged_total = pd.merge(country,people_new,on=["勢(shì)力"])
inner_merged_total.head()

inner_merged_total = pd.merge(people_new,country,on=["勢(shì)力"])
inner_merged_total.head()

外連接

外連接(也稱為完全外連接)中,來(lái)自兩個(gè) DataFrame 的所有行都將出現(xiàn)在新的 DataFrame 中。

本質(zhì)上對(duì)于數(shù)據(jù)全的 df_A 和包含的 df_B 進(jìn)行 outer 拼接,相當(dāng)于 pd.merge(df_A ,df_B,on=[“key”])。

outer_merged = pd.merge(people_new,country,how="outer",on=["勢(shì)力"])
outer_merged.head()

如果我們不剔除在野武將的數(shù)據(jù)的話會(huì)發(fā)現(xiàn)是整張表單進(jìn)行拼接。

country  = pd.read_excel("Romance of the Three Kingdoms 13/勢(shì)力列表.xlsx")
people = pd.read_excel("Romance of the Three Kingdoms 13/人物歷史登入數(shù)據(jù).xlsx")
outer_merged = pd.merge(people_new,country,how="outer",on=["勢(shì)力"])
outer_merged

左連接

新合并的 DataFrame 與左側(cè) DataFrame 中的所有行一起保留(即merge中的第一個(gè)dataframe),同時(shí)丟棄右側(cè) DataFrame 中在左側(cè) DataFrame 的鍵列中沒(méi)有匹配的行。

left_merged = pd.merge(people_new,country,how="left",on=["勢(shì)力"])
left_merged

右連接

新合并的 DataFrame 與右側(cè) DataFrame 中的所有行一起保留(即merge中的第二個(gè)dataframe),同時(shí)丟棄右側(cè) DataFrame 中在左側(cè) DataFrame 的鍵列中沒(méi)有匹配的行。

right_merged = pd.merge(people_new,country,how="right",on=["勢(shì)力"])
right_merged 

join 操作

join 操作和 merge 很相似,是在列或索引上組合數(shù)據(jù),join 相當(dāng)于指定了 merge 中的第一個(gè) DataFreme 。并且命名沖突的列可以定義后綴進(jìn)行重新命名。

這個(gè)結(jié)果和之前的左右 merger 很相似。

join 中參數(shù)解釋:

  • other:定義要拼接的 DataFrame。
  • on:指定左側(cè) DataFrame 的可選列或索引名稱。如果設(shè)置為 None,這是默認(rèn) index 連接。
  • how:與 merge 中的 how 具有相同,如果不指定列則使用索引拼接。
  • lsuffix 和 rsuffix:類似 merge() 中的后綴。
  • sort:對(duì)生成后的 DataFrame 進(jìn)行排序。

join 舉例

people_new.join(country, lsuffix="left", rsuffix="right")

僅僅是index的橫向拼接。

concat 操作

concat 操作起來(lái)就比較靈活,可以進(jìn)行橫向的拼接操作,也可以進(jìn)行縱向的拼接操作。

縱向拼接操作

橫拼接操作

concat 中參數(shù)解釋:

  • objs:要連接的任何數(shù)據(jù)對(duì)象。可以是List,Serices,DataFrame,Dict 等等。
  • axis:連接的軸。默認(rèn)值為0(行軸),1(縱直)連接。
  • join:類似于 merger 中的 how 參數(shù),只接受值 inner 或 outer 。
  • ignore_index:默認(rèn)為False。True 為設(shè)置新的組合數(shù)據(jù)集將不會(huì)保留 axis 參數(shù)中指定的軸中的原始索引值。
  • keys:構(gòu)建分層索引,用于查詢不同的行來(lái)自的原始數(shù)據(jù)集。
  • copy:是否要復(fù)制源數(shù)據(jù),默認(rèn)值為True。

concat 舉例

我們使用三國(guó)的寶物數(shù)據(jù)來(lái)觀察,數(shù)據(jù) 74 行。

import pandas as pd
items  = pd.read_excel("Romance of the Three Kingdoms 13/道具列表.xlsx")
items.head()

橫向拼接后,保持?jǐn)?shù)據(jù)最大行數(shù) 74。

pd.concat([items, items], axis=1)

縱向拼接后,最大行數(shù)變成 74 的 2倍。

pd.concat([items, items], axis=0)

append 舉例

append 也是 DataFrame 數(shù)據(jù)進(jìn)行拼接的有效方式,方式同 concat 的縱向拼接,返回的結(jié)果需要對(duì)變量重新定義才能生效。

注意下面2個(gè) append 行數(shù)的區(qū)別

items.append(items)
items

items = items.append(items)
items

到此這篇關(guān)于Pandas實(shí)現(xiàn)數(shù)據(jù)拼接的操作方法詳解的文章就介紹到這了,更多相關(guān)Pandas數(shù)據(jù)拼接內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python將list中的string批量轉(zhuǎn)化成int/float的方法

    Python將list中的string批量轉(zhuǎn)化成int/float的方法

    今天小編就為大家分享一篇Python將list中的string批量轉(zhuǎn)化成int/float的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • pygame實(shí)現(xiàn)俄羅斯方塊游戲

    pygame實(shí)現(xiàn)俄羅斯方塊游戲

    這篇文章主要為大家詳細(xì)介紹了pygame實(shí)現(xiàn)俄羅斯方塊游戲,代碼注釋詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python list中append()與extend()用法分享

    python list中append()與extend()用法分享

    列表是以類的形式實(shí)現(xiàn)的?!皠?chuàng)建”列表實(shí)際上是將一個(gè)類實(shí)例化。因此,列表有多種方法可以操作
    2013-03-03
  • python持久性管理pickle模塊詳細(xì)介紹

    python持久性管理pickle模塊詳細(xì)介紹

    這篇文章主要介紹了python持久性管理pickle模塊詳細(xì)介紹,本文講解了什么是持久性、一些經(jīng)過(guò) pickle 的 Python等內(nèi)容,并講給出了18個(gè)使用示例,需要的朋友可以參考下
    2015-02-02
  • python使用openpyxl操作excel的方法步驟

    python使用openpyxl操作excel的方法步驟

    這篇文章主要介紹了python使用openpyxl操作excel的方法步驟,詳細(xì)的介紹了openpyxl的常用屬性以及操作excel的方法,感興趣的可以了解一下
    2020-05-05
  • 淺析Python中的for 循環(huán)

    淺析Python中的for 循環(huán)

    這篇文章主要介紹了淺析Python中的for 循環(huán)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • python中str內(nèi)置函數(shù)用法總結(jié)

    python中str內(nèi)置函數(shù)用法總結(jié)

    在本篇文章里小編給大家整理了一篇關(guān)于python中str內(nèi)置函數(shù)用法總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Pytorch的torch.utils.data中Dataset以及DataLoader示例詳解

    Pytorch的torch.utils.data中Dataset以及DataLoader示例詳解

    torch.utils.data?是?PyTorch?提供的一個(gè)模塊,用于處理和加載數(shù)據(jù),該模塊提供了一系列工具類和函數(shù),用于創(chuàng)建、操作和批量加載數(shù)據(jù)集,這篇文章主要介紹了Pytorch的torch.utils.data中Dataset以及DataLoader等詳解,需要的朋友可以參考下
    2023-08-08
  • Python通用唯一標(biāo)識(shí)符uuid模塊使用案例

    Python通用唯一標(biāo)識(shí)符uuid模塊使用案例

    這篇文章主要介紹了Python通用唯一標(biāo)識(shí)符uuid模塊使用案例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python Dataframe 指定多列去重、求差集的方法

    Python Dataframe 指定多列去重、求差集的方法

    今天小編就為大家分享一篇Python Dataframe 指定多列去重、求差集的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論