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

Python中Merge使用的示例詳解

 更新時(shí)間:2023年02月21日 14:04:31   作者:Memory_ss  
Python里的merger函數(shù)是數(shù)據(jù)分析工作中最常見(jiàn)的函數(shù)之一,類(lèi)似于MySQL中的join函數(shù)和Excel中的vlookup函數(shù)。本文將通過(guò)一些簡(jiǎn)單的實(shí)力和大家聊聊Merge的使用,需要的可以了解一下

merage

pandas提供了一個(gè)類(lèi)似于關(guān)系數(shù)據(jù)庫(kù)的連接(join)操作的方法merage,可以根據(jù)一個(gè)或多個(gè)鍵將不同DataFrame中的行連接起來(lái),語(yǔ)法如下:

merge(left, right, how=‘inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True,
suffixes=('_x', ‘_y'), copy=True, indicator=False)

作為一個(gè)功能完善、強(qiáng)大的語(yǔ)言,python的pandas庫(kù)中的merge()支持各種內(nèi)外連接。

  • left與right:兩個(gè)不同的DataFrame
  • how:指的是合并(連接)的方式有inner(內(nèi)連接),left(左外連接),right(右外連接),outer(全外連接);默認(rèn)為inner
  • on : 指的是用于連接的列索引名稱(chēng)。必須存在右右兩個(gè)DataFrame對(duì)象中,如果沒(méi)有指定且其他參數(shù)也未指定則以?xún)蓚€(gè)DataFrame的列名交集做為連接鍵
  • left_on:左則DataFrame中用作連接鍵的列名;這個(gè)參數(shù)中左右列名不相同,但代表的含義相同時(shí)非常有用。
  • right_on:右則DataFrame中用作 連接鍵的列名
  • left_index:使用左則DataFrame中的行索引做為連接鍵
  • right_index:使用右則DataFrame中的行索引做為連接鍵
  • sort:默認(rèn)為T(mén)rue,將合并的數(shù)據(jù)進(jìn)行排序。在大多數(shù)情況下設(shè)置為False可以提高性能
  • suffixes:字符串值組成的元組,用于指定當(dāng)左右DataFrame存在相同列名時(shí)在列名后面附加的后綴名稱(chēng),默認(rèn)為(’_x’,’_y’)
  • copy:默認(rèn)為T(mén)rue,總是將數(shù)據(jù)復(fù)制到數(shù)據(jù)結(jié)構(gòu)中;大多數(shù)情況下設(shè)置為False可以提高性能
  • indicator:在 0.17.0中還增加了一個(gè)顯示合并數(shù)據(jù)中來(lái)源情況;如只來(lái)自己于左邊(left_only)、兩者(both)
#coding=utf-8
import pandas as pd
import numpy as np

class PanMerge():
    def PanMer(self):
        data =  pd.DataFrame([{"id": 0, "name": 'lxh', "age": 20, "cp": 'lm'}, {"id": 1, "name": 'xiao', "age": 40, "cp": 'ly'},{"id": 2, "name": 'hua', "age": 4, "cp": 'yry'}, {"id": 3, "name": 'be', "age": 70, "cp": 'old'}])
        data1 = pd.DataFrame([{"id": 100, "name": 'lxh', 'cs': 10}, {"id": 101, "name": 'xiao', 'cs': 40},{"id": 102, "name": 'hua2', 'cs': 50}])
        data2 = pd.DataFrame([{"id": 0, "name": 'lxh', 'cs': 10}, {"id": 101, "name": 'xiao', 'cs': 40},{"id": 102, "name": 'hua2', 'cs': 50}])
        data3 = pd.DataFrame([{"mid": 0, "mname": 'lxh', 'cs': 10}, {"mid": 101, "mname": 'xiao', 'cs': 40},{"mid": 102, "mname": 'hua2', 'cs': 50}])
        # print(data)
        # print(data1)
        # print(data2)
        df1 = pd.merge(data,data1,on="name",how="left",suffixes=('_a','_b'))#相同的其他類(lèi)名用_a和_b標(biāo)注
        df2 = pd.merge(data, data2, on=("name", "id")) #多列名做為內(nèi)鏈接的連接鍵
        df3 = pd.merge(data, data2)  #不指定on則以?xún)蓚€(gè)DataFrame的列名交集做為連接鍵

        # 使用右邊的DataFrame的行索引做為連接鍵
        indexed_data1 = data1.set_index("name")##設(shè)置行索引名稱(chēng)
        # print(indexed_data1)
        df5 = pd. merge(data, indexed_data1, left_on='name', right_index=True) #"使用右邊的DataFrame的行索引做為連接鍵\r\n"
        print(df5)
        print('左外連接\r\n',pd.merge(data,data1,on="name",how="left",suffixes=('_a','_b')))
        print('左外連接1\r\n',pd.merge(data1,data,on="name",how="left"))
        print ('右外連接\r\n',pd.merge(data,data1,on="name",how="right"))

        # 當(dāng)左右兩個(gè)DataFrame的列名不同,當(dāng)又想做為連接鍵時(shí)可以使用left_on與right_on來(lái)指定連接鍵
        df6=pd.merge(data,data3,left_on=["name","id"],right_on=["mname","mid"])
        print(df6)

join方法提供了一個(gè)簡(jiǎn)便的方法用于將兩個(gè)DataFrame中的不同的列索引合并成為一個(gè)DataFrame。

其中參數(shù)的意義與merge方法基本相同, 只是join方法默認(rèn)為左外連接how = left。

 dj1=pd.DataFrame([{"id":0,"name":'lxh',"age":20,"cp":'lm'},{"id":1,"name":'xiao',"age":40,"cp":'ly'},{"id":2,"name":'hua',"age":4,"cp":'yry'},{"id":3,"name":'be',"age":70,"cp":'old'}],index=['a','b','c','d'])
    dj2=pd.DataFrame([{"sex":0},{"sex":1},{"sex":2}],index=['a','b','e'])
    print(dj1)
    print(dj2)
    df7= dj1.join(dj2)
    print(df7)

    print('使用右連接\r\n', dj1.join(dj2, how="right") ) # 這里出自動(dòng)屏蔽了data1中沒(méi)有index=c,d的那行數(shù)據(jù);等價(jià)于data1.join(data)
    print('使用內(nèi)連接\r\n', dj1.join(dj2, how='inner'))
    print('使用全外連接\r\n', dj1.join(dj2, how='outer'))

還有一種連接方式:concat

concat方法相當(dāng)于數(shù)據(jù)庫(kù)中的全連接(UNION ALL),可以指定按某個(gè)軸進(jìn)行連接,也可以指定連接的方式j(luò)oin(outer,inner 只有這兩種)。

與數(shù)據(jù)庫(kù)不同的是concat不會(huì)去重,要達(dá)到去重的效果可以使用drop_duplicates方法

     dc1 = pd.DataFrame({'city': ['Chicago', 'San Francisco', 'New York City'], 'rank': range(1, 4)})
        dc2 = pd.DataFrame({'city': ['Chicago', 'Boston', 'Los Angeles'], 'rank': [1, 4, 5]})
        print(dc1)
        print(dc2)
        # print('按軸進(jìn)行內(nèi)連接\r\n', pd.concat([dc1, dc2], join="inner", axis=0))
        dc3=pd.concat([dc1,dc2],join="inner", axis=0) #axis=1橫向操作,axis=0縱向操作
        print(dc3)
        dc4=pd.concat([dc1,dc2],keys=['a','b']) #進(jìn)行外連接并指定keys(行索引) 用a,b 進(jìn)行標(biāo)識(shí)
        print(dc4)

        dc5 = pd.concat([dc1,dc2],ignore_index=True).drop_duplicates() #完全一樣時(shí)候,去重?cái)?shù)據(jù)
        print(dc5)


if __name__ == '__main__':
    PanMerge().PanMer()

到此這篇關(guān)于Python中Merge使用的示例詳解的文章就介紹到這了,更多相關(guān)Python Merge內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Python中range和xrange的區(qū)別

    淺談Python中range和xrange的區(qū)別

    本篇文章主要介紹了淺談Python中range和xrange的區(qū)別,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • pandas中的DataFrame數(shù)據(jù)遍歷解讀

    pandas中的DataFrame數(shù)據(jù)遍歷解讀

    這篇文章主要介紹了pandas中的DataFrame數(shù)據(jù)遍歷解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python使用pymongo模塊操作MongoDB的方法示例

    Python使用pymongo模塊操作MongoDB的方法示例

    這篇文章主要介紹了Python使用pymongo模塊操作MongoDB的方法,結(jié)合實(shí)例形式分析了Python基于pymongo模塊連接MongoDB數(shù)據(jù)庫(kù)以及增刪改查與日志記錄相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • Python?字符串使用多個(gè)分隔符分割成列表的2種方法

    Python?字符串使用多個(gè)分隔符分割成列表的2種方法

    本文主要介紹了Python?字符串使用多個(gè)分隔符分割成列表,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 上帝為你開(kāi)了一扇窗之Tkinter常用函數(shù)詳解

    上帝為你開(kāi)了一扇窗之Tkinter常用函數(shù)詳解

    構(gòu)思了很長(zhǎng)一段時(shí)間,總感覺(jué)不夠有趣,于是打算出一個(gè)完整的系列,讓大家一起感受python的樂(lè)趣.這個(gè)系列著重以系統(tǒng)庫(kù)中的tkinter為中心來(lái)圍繞進(jìn)行編寫(xiě).因此我們的第一步是導(dǎo)入模塊, 第一節(jié)就來(lái)為大家建立一個(gè)窗口 ,需要的朋友可以參考下
    2021-06-06
  • python排序函數(shù)sort()與sorted()的區(qū)別

    python排序函數(shù)sort()與sorted()的區(qū)別

    這篇文章主要介紹了python排序函數(shù)sort()與sorted()的區(qū)別,需要的朋友可以參考下
    2018-09-09
  • 解決遇到PermissionError:[Errno 13] Permission denied:XXXX錯(cuò)誤的問(wèn)題

    解決遇到PermissionError:[Errno 13] Permission den

    遇到"PermissionError:[Errno 13] Permission denied"通常是權(quán)限不足導(dǎo)致,解決此問(wèn)題的方法包括檢查并更改文件權(quán)限,使用管理員權(quán)限運(yùn)行命令,或接觸文件所有者,這些步驟有助于確保用戶(hù)具有執(zhí)行操作所需的權(quán)限,有時(shí),文件或目錄可能被鎖定
    2024-09-09
  • Python?內(nèi)置模塊?argparse快速入門(mén)教程

    Python?內(nèi)置模塊?argparse快速入門(mén)教程

    argparse模塊是Python內(nèi)置的用于命令項(xiàng)選項(xiàng)與參數(shù)解析的模塊,argparse模塊可以讓人輕松編寫(xiě)用戶(hù)友好的命令行接口,能夠幫助程序員為模型定義參數(shù),這篇文章主要介紹了快速入門(mén)Python內(nèi)置模塊argparse,需要的朋友可以參考下
    2023-06-06
  • Python Pytorch深度學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)

    Python Pytorch深度學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)

    今天小編就為大家分享一篇關(guān)于Pytorch神經(jīng)網(wǎng)絡(luò)的文章,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-10-10
  • python conda操作方法

    python conda操作方法

    這篇文章主要介紹了python conda操作方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論

元朗区| 阿拉善左旗| 兴业县| 中阳县| 文水县| 中牟县| 甘南县| 察哈| 宁化县| 调兵山市| 通化市| 汝南县| 云龙县| 宁陵县| 长武县| 平罗县| 友谊县| 罗源县| 深水埗区| 安康市| 宜君县| 花莲市| 万安县| 卫辉市| 霍山县| 罗江县| 大竹县| 弥勒县| 陆丰市| 山阳县| 乐业县| 大名县| 清流县| 新河县| 鄢陵县| 西盟| 中江县| 于田县| 新沂市| 临潭县| 清水河县|