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

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

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

merge()

1.常規(guī)合并

①方法1

指定一個參照列,以該列為準,合并其他列。

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

要實現(xiàn)該合并,也可以通過索引來合并,即以index列為基準。將left_index 和 right_index 都設置為True
即可。(left_index 和 right_index 都默認為False,left_index表示左表以左表數(shù)據(jù)的index為基準, right_index表示右表以右表數(shù)據(jù)的index為基準。)

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ù)中有重復列。

重要參數(shù)

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

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

其中,left_index與right_index 不能與 on 同時指定。

合并方式 left right outer inner

準備數(shù)據(jù)‘

新準備一組數(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(默認)

使用來自兩個數(shù)據(jù)集的鍵的交集

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

outer

使用來自兩個數(shù)據(jù)集的鍵的并集

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

left

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

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

right

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

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

2.多對一合并

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中有重復id1的數(shù)據(jù)。

合并

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

合并結果如圖所示:

依然按照默認的Inner方式,使用來自兩個數(shù)據(jù)集的鍵的交集。且重復的鍵的行會在合并結果中體現(xiàn)為多行。

3.多對多合并

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

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對象的序列或映射
axis默認為0,表示列。如果為1則表示行。
join默認為"outer",也可以為"inner"
ignore_index默認為False,表示保留索引(不忽略)。設為True則表示忽略索引。

其他重要參數(shù)通過實例說明。

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

首先準備三組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)

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

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

此時,添加的keys與原來的index組成元組,共同成為新的index。

print(result.index)

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

準備兩組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)

當axis為默認值0時:

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

橫向合并需要將axis設置為1

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

對比以上輸出差異。

  • axis=0時,即默認縱向合并時,如果出現(xiàn)重復的行,則會同時體現(xiàn)在結果中
  • axis=1時,即橫向合并時,如果出現(xiàn)重復的列,則會同時體現(xiàn)在結果中。

3.交叉合并

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

總結

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

相關文章

  • Python安裝OpenCV的示例代碼

    Python安裝OpenCV的示例代碼

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

    Python Unittest原理及基本使用方法

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

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

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

    Python語法def語句及復雜用法實例探究

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

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

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

    python MultipartEncoder傳輸zip文件實例

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

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

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

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

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

    pycharm修改file type方式

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

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

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

最新評論

榆林市| 张家口市| 木兰县| 兴义市| 晋城| 大同县| 无棣县| 区。| 巴里| 虹口区| 海宁市| 微山县| 德兴市| 襄垣县| 平和县| 台南市| 礼泉县| 集贤县| 天等县| 泰兴市| 苍溪县| 万荣县| 凤山市| 江山市| 万山特区| 大田县| 米泉市| 宣武区| 大名县| 荆门市| 馆陶县| 大姚县| 图木舒克市| 长宁区| 贵州省| 广东省| 古浪县| 自贡市| 邓州市| 乌拉特中旗| 寻乌县|