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

Python Pandas實現(xiàn)DataFrame合并的圖文教程

 更新時間:2022年07月26日 09:55:19   作者:笑?癮  
我們在使用pandas處理數(shù)據(jù)的時候,往往會需要合并兩個或者多個DataFrame的操作,下面這篇文章主要給大家介紹了關(guān)于Pandas實現(xiàn)DataFrame合并的相關(guān)資料,需要的朋友可以參考下

一、merge(合并)的語法:

pd.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, validate=None)
參數(shù)介紹:
left,right:要merge的dataframe或者有name的Series
how:join類型,'left', 'right', 'outer', 'inner'
on:join的key,left和right都需要有這個key
left_on:left的df或者series的key
right_on:right的df或者seires的key
left_index,right_index:使用index而不是普通的column做join
suffixes:兩個元素的后綴,如果列有重名,自動添加后綴,默認(rèn)是('_x', '_y')

二、以關(guān)鍵列來合并兩個dataframe

可以看到只有l(wèi)eft和right的key1=y的行保留了下來,即默認(rèn)合并后只保留有共同列項并且值相等行(即交集)。

本例中l(wèi)eft和right的k1=y分別有2個,最終構(gòu)成了2*2=4行

import pandas as pd
left = pd.DataFrame({'A': ['a0', 'a1', 'a2', 'a3'],
                     'B': ['b0', 'b1', 'b2', 'b3'],
                     'k1': ['x', 'x', 'y', 'y']})
right = pd.DataFrame({'C': ['c1', 'c2', 'c3', 'c4'],
                      'D': ['d1', 'd2', 'd3', 'd4'],
                      'k1': ['y', 'y', 'z', 'z']})

left

left

right

pd.merge(left, right, on=‘k1’)

三、理解merge時數(shù)量的對齊關(guān)系

one-to-one:一對一關(guān)系,關(guān)聯(lián)的key都是唯一的
    比如(學(xué)號,姓名) merge (學(xué)號,年齡)
    結(jié)果條數(shù)為:1*1
one-to-many:一對多關(guān)系,左邊唯一key,右邊不唯一key
    比如(學(xué)號,姓名) merge (學(xué)號,[語文成績、數(shù)學(xué)成績、英語成績])
    結(jié)果條數(shù)為:1*N
many-to-many:多對多關(guān)系,左邊右邊都不是唯一的
    比如(學(xué)號,[語文成績、數(shù)學(xué)成績、英語成績]) merge (學(xué)號,[籃球、足球、乒乓球])
    結(jié)果條數(shù)為:M*N

1、one-to-one 一對一關(guān)系的merge

left = pd.DataFrame({'sno': [11, 12, 13, 14],
                      'name': ['name_a', 'name_b', 'name_c', 'name_d']
                    })
right = pd.DataFrame({'sno': [11, 12, 13, 14],
                      'age': ['21', '22', '23', '24']
                    })

left

right

# 一對一關(guān)系,結(jié)果中有4條
pd.merge(left, right, on='sno')

2、one-to-many 一對多關(guān)系的merge

注意:數(shù)據(jù)會被復(fù)制

left = pd.DataFrame({'sno': [11, 12, 13, 14],
                      'name': ['name_a', 'name_b', 'name_c', 'name_d']
                    })
right = pd.DataFrame({'sno': [11, 11, 11, 12, 12, 13],
                       'grade': ['語文88', '數(shù)學(xué)90', '英語75','語文66', '數(shù)學(xué)55', '英語29']
                     })

left

right

# 數(shù)目以多的一邊為準(zhǔn)
pd.merge(left, right, on='sno')

3、many-to-many 多對多關(guān)系的merge

注意:結(jié)果數(shù)量會出現(xiàn)乘法

left = pd.DataFrame({'sno': [11, 11, 12, 12,12],
                      '愛好': ['籃球', '羽毛球', '乒乓球', '籃球', "足球"]
                    })
right = pd.DataFrame({'sno': [11, 11, 11, 12, 12, 13],
                       'grade': ['語文88', '數(shù)學(xué)90', '英語75','語文66', '數(shù)學(xué)55', '英語29']
                     })

left

right

pd.merge(left, right, on=‘sno’)

四、理解left join、right join、inner join、outer join的區(qū)別

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                      'A': ['A0', 'A1', 'A2', 'A3'],
                      'B': ['B0', 'B1', 'B2', 'B3']})

right = pd.DataFrame({'key': ['K0', 'K1', 'K4', 'K5'],
                      'C': ['C0', 'C1', 'C4', 'C5'],
                      'D': ['D0', 'D1', 'D4', 'D5']})

left

right

1、inner join,默認(rèn)

左邊和右邊的key都有,才會出現(xiàn)在結(jié)果里

pd.merge(left, right, how='inner')

2、left join

左邊的都會出現(xiàn)在結(jié)果里,右邊的如果無法匹配則為Null

pd.merge(left, right, how='left')

3、 right join

右邊的都會出現(xiàn)在結(jié)果里,左邊的如果無法匹配則為Null

pd.merge(left, right, how='right')

4、 outer join

左邊、右邊的都會出現(xiàn)在結(jié)果里,如果無法匹配則為Null

pd.merge(left, right, how='outer')

五、如果出現(xiàn)非Key的字段重名怎么辦

left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                      'A': ['A0', 'A1', 'A2', 'A3'],
                      'B': ['B0', 'B1', 'B2', 'B3']})

right = pd.DataFrame({'key': ['K0', 'K1', 'K4', 'K5'],
                      'A': ['A10', 'A11', 'A12', 'A13'],
                      'D': ['D0', 'D1', 'D4', 'D5']})

left

right

pd.merge(left, right, on='key')

pd.merge(left, right, on='key', suffixes=('_left', '_right'))

總結(jié)

到此這篇關(guān)于Pandas實現(xiàn)DataFrame合并的文章就介紹到這了,更多相關(guān)Pandas DataFrame合并內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用Excel將數(shù)據(jù)寫入多個sheet

    Python使用Excel將數(shù)據(jù)寫入多個sheet

    這篇文章主要介紹了Python使用Excel將數(shù)據(jù)寫入多個sheet,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • PyCharm基礎(chǔ)調(diào)試的教程

    PyCharm基礎(chǔ)調(diào)試的教程

    PyCharm作為Python開發(fā)的集成環(huán)境,提供了全面的調(diào)試工具,文中通過圖文及示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Python pass 語句使用示例

    Python pass 語句使用示例

    這篇文章主要介紹了Python pass 語句的使用方法示例,需要的朋友可以參考下
    2014-03-03
  • python 合并文件的具體實例

    python 合并文件的具體實例

    提供了很多個文件,需要對文件分析,如果每次讀取多個文件,造成很多麻煩,所以需要對源文件進(jìn)行合并預(yù)處理。
    2013-08-08
  • python遍歷數(shù)組的方法小結(jié)

    python遍歷數(shù)組的方法小結(jié)

    這篇文章主要介紹了python遍歷數(shù)組的方法,實例總結(jié)了兩種Python遍歷數(shù)組的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • python采用django框架實現(xiàn)支付寶即時到帳接口

    python采用django框架實現(xiàn)支付寶即時到帳接口

    這篇文章主要介紹了python采用django框架實現(xiàn)支付寶即時到帳接口的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • Python爬蟲之pandas基本安裝與使用方法示例

    Python爬蟲之pandas基本安裝與使用方法示例

    這篇文章主要介紹了Python爬蟲之pandas基本安裝與使用方法,結(jié)合實例形式分析了Python爬蟲操作中pandas的pip命令安裝與HTML、Excel等格式文件保存相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • python 使用re.search()篩選后 選取部分結(jié)果的方法

    python 使用re.search()篩選后 選取部分結(jié)果的方法

    今天小編就為大家分享一篇python 使用re.search()篩選后 選取部分結(jié)果的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 關(guān)于Python如何安裝requests庫

    關(guān)于Python如何安裝requests庫

    這篇文章主要介紹了關(guān)于Python如何安裝requests庫,requests庫自稱“HTTP for Humans”,直譯過來的意思是專門為人類設(shè)計的HTTP庫,能夠被開發(fā)人員安全地使用,需要的朋友可以參考下
    2023-04-04
  • 使用flask如何獲取post請求參數(shù)

    使用flask如何獲取post請求參數(shù)

    近日在使用flask框架獲取前端的請求時獲取參數(shù)時,遇到了幾個問題,所以下面這篇文章主要給大家介紹了關(guān)于使用flask如何獲取post請求參數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評論

永嘉县| 麻栗坡县| 迁西县| 沙洋县| 龙山县| 诏安县| 佳木斯市| 桃源县| 抚州市| 江油市| 南安市| 澄城县| 武定县| 句容市| 易门县| 崇义县| 青龙| 福州市| 右玉县| 邵阳县| 青海省| 独山县| 桑植县| 台中市| 灌南县| 韶关市| 宁蒗| 南充市| 宜黄县| 香格里拉县| 体育| 浦江县| 武鸣县| 永胜县| 叶城县| 泊头市| 长海县| 通许县| 潍坊市| 盐城市| 正蓝旗|