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

python中DataFrame數(shù)據(jù)合并merge()和concat()方法詳解

 更新時(shí)間:2022年07月05日 08:38:26   作者:侯小啾  
Pandas提供了很多合并Series和Dataframe的強(qiáng)大的功能,通過(guò)這些功能可以方便的進(jìn)行數(shù)據(jù)分析,下面這篇文章主要給大家介紹了關(guān)于python中DataFrame數(shù)據(jù)合并merge()和concat()方法的相關(guān)資料,需要的朋友可以參考下

merge()

1.常規(guī)合并

①方法1

指定一個(gè)參照列,以該列為準(zhǔn),合并其他列。

import pandas as pd

df1 = pd.DataFrame({'id': ['001', '002', '003'],
                    'num1': [120, 101, 104],
                    'num2': [110, 102, 121],
                    'num3': [105, 120, 113]})
df2 = pd.DataFrame({'id': ['001', '002', '003'],
                    'num4': [80, 86, 79]})
print(df1)
print("=======================================")
print(df2)
print("=======================================")
df_merge = pd.merge(df1, df2, on='id')
print(df_merge)

②方法2

要實(shí)現(xiàn)該合并,也可以通過(guò)索引來(lái)合并,即以index列為基準(zhǔn)。將left_index 和 right_index 都設(shè)置為T(mén)rue
即可。(left_index 和 right_index 都默認(rèn)為False,left_index表示左表以左表數(shù)據(jù)的index為基準(zhǔn), right_index表示右表以右表數(shù)據(jù)的index為基準(zhǔn)。)

import pandas as pd

df1 = pd.DataFrame({'id': ['001', '002', '003'],
                    'num1': [120, 101, 104],
                    'num2': [110, 102, 121],
                    'num3': [105, 120, 113]})
df2 = pd.DataFrame({'id': ['001', '002', '003'],
                    'num4': [80, 86, 79]})
print(df1)
print("=======================================")
print(df2)
print("=======================================")

df_merge = pd.merge(df1, df2, left_index=True, right_index=True)
print(df_merge)

相比方法①,區(qū)別在于,如圖,方法②合并出的數(shù)據(jù)中有重復(fù)列。

重要參數(shù)

pd.merge(right,how=‘inner’, on=“None”, left_on=“None”, right_on=“None”, left_index=False, right_index=False )

參數(shù)描述
left左表,合并對(duì)象,DataFrame或Series
right右表,合并對(duì)象,DataFrame或Series
how合并方式,可以是left(左合并), right(右合并), outer(外合并), inner(內(nèi)合并)
on基準(zhǔn)列 的列名
left_on左表基準(zhǔn)列列名
right_on右表基準(zhǔn)列列名
left_index左列是否以index為基準(zhǔn),默認(rèn)False,否
right_index右列是否以index為基準(zhǔn),默認(rèn)False,否

其中,left_index與right_index 不能與 on 同時(shí)指定。

合并方式 left right outer inner

準(zhǔn)備數(shù)據(jù)‘

新準(zhǔn)備一組數(shù)據(jù):

import pandas as pd

df1 = pd.DataFrame({'id': ['001', '002', '003'],
                    'num1': [120, 101, 104],
                    'num2': [110, 102, 121],
                    'num3': [105, 120, 113]})
df2 = pd.DataFrame({'id': ['001', '004', '003'],
                    'num4': [80, 86, 79]})
print(df1)
print("=======================================")
print(df2)
print("=======================================")

inner(默認(rèn))

使用來(lái)自?xún)蓚€(gè)數(shù)據(jù)集的鍵的交集

df_merge = pd.merge(df1, df2, on='id')
print(df_merge)

outer

使用來(lái)自?xún)蓚€(gè)數(shù)據(jù)集的鍵的并集

df_merge = pd.merge(df1, df2, on='id', how="outer")
print(df_merge)

left

使用來(lái)自左數(shù)據(jù)集的鍵

df_merge = pd.merge(df1, df2, on='id', how='left')
print(df_merge)

right

使用來(lái)自右數(shù)據(jù)集的鍵

df_merge = pd.merge(df1, df2, on='id', how='right')
print(df_merge)

2.多對(duì)一合并

import pandas as pd

df1 = pd.DataFrame({'id': ['001', '002', '003'],
                    'num1': [120, 101, 104],
                    'num2': [110, 102, 121],
                    'num3': [105, 120, 113]})
df2 = pd.DataFrame({'id': ['001', '001', '003'],
                    'num4': [80, 86, 79]})
print(df1)
print("=======================================")
print(df2)
print("=======================================")

如圖,df2中有重復(fù)id1的數(shù)據(jù)。

合并

df_merge = pd.merge(df1, df2, on='id')
print(df_merge)

合并結(jié)果如圖所示:

依然按照默認(rèn)的Inner方式,使用來(lái)自?xún)蓚€(gè)數(shù)據(jù)集的鍵的交集。且重復(fù)的鍵的行會(huì)在合并結(jié)果中體現(xiàn)為多行。

3.多對(duì)多合并

如圖表1和表2中都存在多行id重復(fù)的。

import pandas as pd
df1 = pd.DataFrame({'id': ['001', '002', '002', '002', '003'],
                    'num1': [120, 101, 104, 114, 123],
                    'num2': [110, 102, 121, 113, 126],
                    'num3': [105, 120, 113, 124, 128]})
df2 = pd.DataFrame({'id': ['001', '001', '002', '003', '001'],
                    'num4': [80, 86, 79, 88, 93]})
print(df1)
print("=======================================")
print(df2)
print("=======================================")

df_merge = pd.merge(df1, df2, on='id')
print(df_merge)

concat()

pd.concat(objs, axis=0, join=‘outer’, ignore_index:bool=False,keys=None,levels=None,names=None, verify_integrity:bool=False,sort:bool=False,copy:bool=True)

參數(shù)描述
objsSeries,DataFrame或Panel對(duì)象的序列或映射
axis默認(rèn)為0,表示列。如果為1則表示行。
join默認(rèn)為"outer",也可以為"inner"
ignore_index默認(rèn)為False,表示保留索引(不忽略)。設(shè)為T(mén)rue則表示忽略索引。

其他重要參數(shù)通過(guò)實(shí)例說(shuō)明。

1.相同字段的表首位相連

首先準(zhǔn)備三組DataFrame數(shù)據(jù):

import pandas as pd
df1 = pd.DataFrame({'id': ['001', '002', '003'],
                    'num1': [120, 114, 123],
                    'num2': [110, 102, 121],
                    'num3': [113, 124, 128]})
df2 = pd.DataFrame({'id': ['004', '005'],
                    'num1': [120, 101],
                    'num2': [113, 126],
                    'num3': [105, 128]})
df3 = pd.DataFrame({'id': ['007', '008', '009'],
                    'num1': [120, 101, 125],
                    'num2': [113, 126, 163],
                    'num3': [105, 128, 114]})


print(df1)
print("=======================================")
print(df2)
print("=======================================")
print(df3)

合并

dfs = [df1, df2, df3]
result = pd.concat(dfs)
print(result)

如果想要在合并后,標(biāo)記一下數(shù)據(jù)都來(lái)自于哪張表或者數(shù)據(jù)的某類(lèi)別,則也可以給concat加上 參數(shù)keys

result = pd.concat(dfs, keys=['table1', 'table2', 'table3'])
print(result)

此時(shí),添加的keys與原來(lái)的index組成元組,共同成為新的index。

print(result.index)

2.橫向表合并(行對(duì)齊)

準(zhǔn)備兩組DataFrame數(shù)據(jù):

import pandas as pd
df1 = pd.DataFrame({'num1': [120, 114, 123],
                    'num2': [110, 102, 121],
                    'num3': [113, 124, 128]}, index=['001', '002', '003'])
df2 = pd.DataFrame({'num3': [117, 120, 101, 126],
                    'num5': [113, 125, 126, 133],
                    'num6': [105, 130, 128, 128]}, index=['002', '003', '004', '005'])

print(df1)
print("=======================================")
print(df2)

當(dāng)axis為默認(rèn)值0時(shí):

result = pd.concat([df1, df2])
print(result)

橫向合并需要將axis設(shè)置為1

result = pd.concat([df1, df2], axis=1)
print(result)

對(duì)比以上輸出差異。

  • axis=0時(shí),即默認(rèn)縱向合并時(shí),如果出現(xiàn)重復(fù)的行,則會(huì)同時(shí)體現(xiàn)在結(jié)果中
  • axis=1時(shí),即橫向合并時(shí),如果出現(xiàn)重復(fù)的列,則會(huì)同時(shí)體現(xiàn)在結(jié)果中。

3.交叉合并

result = pd.concat([df1, df2], axis=1, join='inner')
print(result)

總結(jié)

到此這篇關(guān)于python中DataFrame數(shù)據(jù)合并merge()和concat()方法的文章就介紹到這了,更多相關(guān)python數(shù)據(jù)合并merge()和concat()方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python安裝OpenCV的示例代碼

    Python安裝OpenCV的示例代碼

    這篇文章主要介紹了Python安裝OpenCV的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python Unittest原理及基本使用方法

    Python Unittest原理及基本使用方法

    這篇文章主要介紹了Python Unittest原理及基本使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python腳本傳參數(shù)argparse模塊的使用

    Python腳本傳參數(shù)argparse模塊的使用

    這篇文章主要介紹了Python腳本傳參數(shù)argparse模塊的使用,文章圍繞argparse模塊的相關(guān)資料展開(kāi)具體的使用方法,具有一的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • Python語(yǔ)法def語(yǔ)句及復(fù)雜用法實(shí)例探究

    Python語(yǔ)法def語(yǔ)句及復(fù)雜用法實(shí)例探究

    在 Python 中,def?是用于定義函數(shù)的關(guān)鍵字,本文將深入介紹def的用法和特點(diǎn),詳細(xì)說(shuō)明如何定義函數(shù)、傳遞參數(shù)、返回值以及更復(fù)雜的用法
    2024-01-01
  • django中間件及自定義中間件的實(shí)現(xiàn)方法

    django中間件及自定義中間件的實(shí)現(xiàn)方法

    中間件就是在目標(biāo)和結(jié)果之間進(jìn)行的額外處理過(guò)程,在Django中就是request和response之間進(jìn)行的處理,相對(duì)來(lái)說(shuō)實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,這篇文章主要介紹了django中間件以及自定義中間件?,需要的朋友可以參考下
    2023-06-06
  • python MultipartEncoder傳輸zip文件實(shí)例

    python MultipartEncoder傳輸zip文件實(shí)例

    這篇文章主要介紹了python MultipartEncoder傳輸zip文件實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python實(shí)現(xiàn)合并與拆分多個(gè)PDF文檔中的指定頁(yè)

    Python實(shí)現(xiàn)合并與拆分多個(gè)PDF文檔中的指定頁(yè)

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)將多個(gè)PDF文檔中的指定頁(yè)合并生成新的PDF以及拆分PDF,感興趣的小伙伴可以參考一下
    2025-03-03
  • Python多線程采集二手房源數(shù)據(jù)信息流程詳解

    Python多線程采集二手房源數(shù)據(jù)信息流程詳解

    這篇文章主要介紹了Python多線程采集二手房源數(shù)據(jù)信息流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-05-05
  • pycharm修改file type方式

    pycharm修改file type方式

    今天小編就為大家分享一篇pycharm修改file type方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 詳解利用django中間件django.middleware.csrf.CsrfViewMiddleware防止csrf攻擊

    詳解利用django中間件django.middleware.csrf.CsrfViewMiddleware防止csrf

    這篇文章主要介紹了詳解利用django中間件django.middleware.csrf.CsrfViewMiddleware防止csrf攻擊,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10

最新評(píng)論

荥阳市| 固安县| 庄浪县| 孝感市| 新疆| 铜鼓县| 曲松县| 府谷县| 乌海市| 板桥市| 乌海市| 金秀| 兰州市| 铁岭县| 天台县| 大连市| 姚安县| 广宗县| 宁南县| 盐津县| 苏尼特右旗| 固阳县| 昂仁县| 张家港市| 温州市| 石河子市| 应用必备| 洞口县| 慈溪市| 和硕县| 织金县| 潞城市| 多伦县| 垣曲县| 双辽市| 辛集市| 曲周县| 博湖县| 鄯善县| 金平| 静安区|