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

Python中Merge使用的示例詳解

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

merage

pandas提供了一個類似于關系數據庫的連接(join)操作的方法merage,可以根據一個或多個鍵將不同DataFrame中的行連接起來,語法如下:

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)

作為一個功能完善、強大的語言,python的pandas庫中的merge()支持各種內外連接。

  • left與right:兩個不同的DataFrame
  • how:指的是合并(連接)的方式有inner(內連接),left(左外連接),right(右外連接),outer(全外連接);默認為inner
  • on : 指的是用于連接的列索引名稱。必須存在右右兩個DataFrame對象中,如果沒有指定且其他參數也未指定則以兩個DataFrame的列名交集做為連接鍵
  • left_on:左則DataFrame中用作連接鍵的列名;這個參數中左右列名不相同,但代表的含義相同時非常有用。
  • right_on:右則DataFrame中用作 連接鍵的列名
  • left_index:使用左則DataFrame中的行索引做為連接鍵
  • right_index:使用右則DataFrame中的行索引做為連接鍵
  • sort:默認為True,將合并的數據進行排序。在大多數情況下設置為False可以提高性能
  • suffixes:字符串值組成的元組,用于指定當左右DataFrame存在相同列名時在列名后面附加的后綴名稱,默認為(’_x’,’_y’)
  • copy:默認為True,總是將數據復制到數據結構中;大多數情況下設置為False可以提高性能
  • indicator:在 0.17.0中還增加了一個顯示合并數據中來源情況;如只來自己于左邊(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'))#相同的其他類名用_a和_b標注
        df2 = pd.merge(data, data2, on=("name", "id")) #多列名做為內鏈接的連接鍵
        df3 = pd.merge(data, data2)  #不指定on則以兩個DataFrame的列名交集做為連接鍵

        # 使用右邊的DataFrame的行索引做為連接鍵
        indexed_data1 = data1.set_index("name")##設置行索引名稱
        # 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"))

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

join方法提供了一個簡便的方法用于將兩個DataFrame中的不同的列索引合并成為一個DataFrame。

其中參數的意義與merge方法基本相同, 只是join方法默認為左外連接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") ) # 這里出自動屏蔽了data1中沒有index=c,d的那行數據;等價于data1.join(data)
    print('使用內連接\r\n', dj1.join(dj2, how='inner'))
    print('使用全外連接\r\n', dj1.join(dj2, how='outer'))

還有一種連接方式:concat

concat方法相當于數據庫中的全連接(UNION ALL),可以指定按某個軸進行連接,也可以指定連接的方式join(outer,inner 只有這兩種)。

與數據庫不同的是concat不會去重,要達到去重的效果可以使用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('按軸進行內連接\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']) #進行外連接并指定keys(行索引) 用a,b 進行標識
        print(dc4)

        dc5 = pd.concat([dc1,dc2],ignore_index=True).drop_duplicates() #完全一樣時候,去重數據
        print(dc5)


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

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

相關文章

  • Django+vue+vscode前后端分離搭建的實現

    Django+vue+vscode前后端分離搭建的實現

    本文以一個非常簡單的demo為例,介紹了利用django+drf+vue的前后端分離開發(fā)模式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-08-08
  • pytorch通過訓練結果的復現設置隨機種子

    pytorch通過訓練結果的復現設置隨機種子

    這篇文章主要介紹了pytorch通過訓練結果的復現設置隨機種子的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 基于Python實現股票數據分析的可視化

    基于Python實現股票數據分析的可視化

    在購買股票的時候,可以使用歷史數據來對當前的股票的走勢進行預測,這就需要對股票的數據進行獲取并且進行一定的分析。本文將介紹如何通過Python實現股票數據分析的可視化,需要的可以參考一下
    2021-12-12
  • Flask模板渲染與Get和Post請求詳細介紹

    Flask模板渲染與Get和Post請求詳細介紹

    這篇文章主要介紹了Flask模板渲染與Get和Post請求,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-09-09
  • Python簡單定義與使用二叉樹示例

    Python簡單定義與使用二叉樹示例

    這篇文章主要介紹了Python簡單定義與使用二叉樹,結合實例形式分析了Python定義二叉樹及節(jié)點插入相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • 在Pandas中更改DataFrame中的值

    在Pandas中更改DataFrame中的值

    這篇文章主要介紹了在Pandas中更改DataFrame中的值方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python調用cmd命令時遇到的路徑空格問題和中文亂碼的解決

    python調用cmd命令時遇到的路徑空格問題和中文亂碼的解決

    這篇文章主要介紹了python調用cmd命令時遇到的路徑空格問題和中文亂碼的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python編程學習之如何判斷3個數的大小

    Python編程學習之如何判斷3個數的大小

    這篇文章主要給大家介紹了關于Python編程學習之如何判斷3個數的大小的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • Python反爬蟲偽裝瀏覽器進行爬蟲

    Python反爬蟲偽裝瀏覽器進行爬蟲

    這篇文章主要介紹了Python反爬蟲偽裝瀏覽器進行爬蟲,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • python如何求取指定范圍內的質數

    python如何求取指定范圍內的質數

    這篇文章主要介紹了python如何求取指定范圍內的質數問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論