最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ān)鍵字的索引進(jìn)行拼接,實(shí)現(xiàn)多對一、一對多、多對多(笛卡爾乘積)連接。

merge 中參數(shù)解釋:

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

merge 拼接方式

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

merge 舉例

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

我們要進(jìn)行勢力所屬和人物直接關(guān)系的拼接操作,讀取的數(shù)據(jù)包括下面的2個(gè)列表,并將 人物歷史登入數(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 默認(rèn)參數(shù)可以直接進(jìn)行內(nèi)部連接,匹配兩個(gè)DataFrame交集的結(jié)果。

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

外連接

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

本質(zhì)上對于數(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=["勢力"])
outer_merged.head()

如果我們不剔除在野武將的數(shù)據(jù)的話會(huì)發(fā)現(xiàn)是整張表單進(jì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中的第一個(gè)dataframe),同時(shí)丟棄右側(cè) DataFrame 中在左側(cè) DataFrame 的鍵列中沒有匹配的行。

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

右連接

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

right_merged = pd.merge(people_new,country,how="right",on=["勢力"])
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:對生成后的 DataFrame 進(jìn)行排序。

join 舉例

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

僅僅是index的橫向拼接。

concat 操作

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

縱向拼接操作

橫拼接操作

concat 中參數(shù)解釋:

  • objs:要連接的任何數(shù)據(jù)對象??梢允荓ist,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)建分層索引,用于查詢不同的行來自的原始數(shù)據(jù)集。
  • copy:是否要復(fù)制源數(shù)據(jù),默認(rèn)值為True。

concat 舉例

我們使用三國的寶物數(shù)據(jù)來觀察,數(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é)果需要對變量重新定義才能生效。

注意下面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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • No module named 'plotly.graph_objects'報(bào)錯(cuò)解決

    No module named 'plotly.graph_objects&ap

    這篇文章主要為大家介紹了No module named 'plotly.graph_objects'報(bào)錯(cuò)解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • 四個(gè)Python操作Excel的常用腳本分享

    四個(gè)Python操作Excel的常用腳本分享

    在數(shù)字化時(shí)代,很多人工作中經(jīng)常和excel打交道。本文和大家分享四個(gè)Python操作excel的腳本,讓你工作效率更高,需要的小伙伴可以參考一下
    2022-11-11
  • 快速進(jìn)修Python指南之簡易跳表

    快速進(jìn)修Python指南之簡易跳表

    這篇文章主要為大家介紹了Java開發(fā)者快速進(jìn)修Python指南之簡易跳表示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 在python中實(shí)現(xiàn)調(diào)用可執(zhí)行文件.exe的3種方法

    在python中實(shí)現(xiàn)調(diào)用可執(zhí)行文件.exe的3種方法

    今天小編就為大家分享一篇在python中實(shí)現(xiàn)調(diào)用可執(zhí)行文件.exe的3種方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Pycharm中配置使用Anaconda的虛擬環(huán)境進(jìn)行項(xiàng)目開發(fā)的圖文教程

    Pycharm中配置使用Anaconda的虛擬環(huán)境進(jìn)行項(xiàng)目開發(fā)的圖文教程

    今天在一臺電腦上跑環(huán)境的時(shí)候,發(fā)現(xiàn)已經(jīng)裝了Pytorch了,但是運(yùn)行沒有用,提示報(bào)錯(cuò):OSError:?[WinError?126]?找不到指定的模塊,但其實(shí)cmd進(jìn)入虛擬環(huán)境是可以調(diào)用torch的,故本文給大家介紹了Pycharm中配置使用Anaconda的虛擬環(huán)境進(jìn)行項(xiàng)目開發(fā)的圖文教程
    2024-09-09
  • Python?變量類型實(shí)例詳解

    Python?變量類型實(shí)例詳解

    這篇文章主要介紹了Python?變量類型實(shí)例詳解,基于變量的數(shù)據(jù)類型,解釋器會(huì)分配指定內(nèi)存,并決定什么數(shù)據(jù)可以被存儲(chǔ)在內(nèi)存中,接下來更多詳細(xì)內(nèi)容需要的小伙伴可以參考下面文章,希望對你有所幫助
    2022-02-02
  • Python如何在DataFrame增加數(shù)值

    Python如何在DataFrame增加數(shù)值

    這篇文章主要介紹了Python如何在DataFrame增加數(shù)值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • django將數(shù)組傳遞給前臺模板的方法

    django將數(shù)組傳遞給前臺模板的方法

    今天小編就為大家分享一篇django將數(shù)組傳遞給前臺模板的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python生成requirements.txt的三種方法

    Python生成requirements.txt的三種方法

    requirements.txt?文件通常用于列出項(xiàng)目所需的所有Python包及其版本,本文主要介紹了Python生成requirements.txt的三種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • 詳解python中*號的用法

    詳解python中*號的用法

    這篇文章主要介紹了python中*號的用法,文中通過代碼給大家介紹了雙星號(**)的用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評論

车致| 宁化县| 汽车| 龙胜| 蓬溪县| 密云县| 临安市| 田林县| 西昌市| 城步| 洛阳市| 革吉县| 阿克苏市| 通江县| 山阳县| 拉孜县| 平顶山市| 安顺市| 正安县| 南郑县| 苍山县| 博爱县| 福清市| 韩城市| 呼和浩特市| 乐东| 凤台县| 措美县| 天柱县| 古交市| 三门县| 虞城县| 耿马| 平陆县| 方正县| 建平县| 克拉玛依市| 德庆县| 禄劝| 黔西县| 米易县|