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

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

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

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

merge 操作

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

通過關鍵字的索引進行拼接,實現(xiàn)多對一、一對多、多對多(笛卡爾乘積)連接。

merge 中參數(shù)解釋:

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

merge 拼接方式

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

merge 舉例

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

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

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

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

country.head()

people.head()

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

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

將人物和所屬勢力進行一個拼接,這里我們?nèi)〉氖沁@個人物最終歸屬的勢力,即改人物數(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=["勢力"])
inner_merged_total.head()

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

外連接

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

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

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

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

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

左連接

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

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

右連接

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

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

join 操作

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

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

join 中參數(shù)解釋:

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

join 舉例

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

僅僅是index的橫向拼接。

concat 操作

concat 操作起來就比較靈活,可以進行橫向的拼接操作,也可以進行縱向的拼接操作。

縱向拼接操作

橫拼接操作

concat 中參數(shù)解釋:

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

concat 舉例

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

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

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

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

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

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

append 舉例

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

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

items.append(items)
items

items = items.append(items)
items

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

相關文章

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

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

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

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

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

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

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

    python持久性管理pickle模塊詳細介紹

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

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

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

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

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

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

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

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

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

    Python通用唯一標識符uuid模塊使用案例

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

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

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

最新評論