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

利用pandas如何實(shí)現(xiàn)類似sql中的left join操作

 更新時(shí)間:2023年06月13日 10:30:33   作者:slaythedragon  
這篇文章主要介紹了利用pandas如何實(shí)現(xiàn)類似sql中的left join操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

pandas實(shí)現(xiàn)類似sql中的left join操作

使用pandas的merge函數(shù)

import pandas as pd
df1 = pd.read_csv(r"1.csv",index_col=0)
df2 = pd.read_csv(r"2.csv",index_col=0)
# on中填寫根據(jù)哪個(gè)字段來(lái)進(jìn)行連接,how為left代表left join
df = pd.merge(df1,df2, on='LocationID',how='left')
# print(df)
# 只取出這些列,組成新的DataFrame,帶有col_name
df = df[['LocationName','Description','ActiveFlag','owner name','the location nature']]
# 將列進(jìn)行重命名
new_col = ['location code', 'location name', 'ActiveFlag','owner name','the location nature']
df.columns = new_col
print(df)
# 導(dǎo)出為csv
df.to_csv(path_or_buf=r"3.csv", encoding="utf_8_sig")

pandas數(shù)據(jù)拼接操作merge、join、concat

在做數(shù)據(jù)處理過(guò)程中會(huì)遇到多個(gè)數(shù)據(jù)集之間進(jìn)行拼接的操作,這里由于平時(shí)都是用的Pandas讀取的數(shù)據(jù)集,所以一般是針對(duì)的是DataFrame類型的數(shù)據(jù)進(jìn)行拼接操作。

1. merge

用于通過(guò)一個(gè)或多個(gè)鍵將兩個(gè)數(shù)據(jù)集的行連接起來(lái),類似于 SQL 中的 JOIN。

該函數(shù)的典型應(yīng)用場(chǎng)景是,針對(duì)同一個(gè)主鍵存在兩張包含不同字段的表,現(xiàn)在我們想把他們整合到一張表里。

在此典型情況下,結(jié)果集的行數(shù)并沒(méi)有增加,列數(shù)則為兩個(gè)元數(shù)據(jù)的列數(shù)和減去連接鍵的數(shù)量。

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

參數(shù)解釋: 

  • right: 要連接的目標(biāo)數(shù)據(jù),類型為DataFrame或者帶列名的Series 
  • how :連接方式,類似sql語(yǔ)句中的(left ,right,inner,outer),這里默認(rèn)為'inner', 可選的參數(shù)有l(wèi)eft, right , inner , outer
  • on : 連接的列名或者index, 也就是指明2個(gè)要連接的對(duì)象之間通過(guò)哪個(gè)列名或者索引名進(jìn)行連接。
  • left_on : 指定左邊的DataFrame以哪個(gè)列名或者索引名進(jìn)行連接
  • right_on :指定右邊的DataFrame以哪個(gè)列名或者索引名進(jìn)行連接
  • left_index:用左邊的DataFrame當(dāng)做連接Key
  • right_index:用右邊的DataFrame當(dāng)做連接Key
  • sort:按照字典順序?qū)B接Key進(jìn)行排序,默認(rèn)為False,默認(rèn)連接鍵的順序取決于連接類型
  • suffixes:連接后的列名默認(rèn)帶下標(biāo) ('_x' ,  '_y')
  • copy:默認(rèn)復(fù)制,如果設(shè)置為False,則盡可能的避免復(fù)制

a . 默認(rèn)以相同的列名進(jìn)行連接鍵 

2. join 

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

df.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

參數(shù)解釋:

  • other:另一個(gè)待拼接的DataFrame或者有名稱列表的Series 
  • on:連接的列名或者index, 也就是指明2個(gè)要連接的對(duì)象之間通過(guò)哪個(gè)列名或者索引名進(jìn)行連接。
  • how:連接方式,類似sql語(yǔ)句中的(left ,right,inner,outer),這里默認(rèn)為'left', 可選的參數(shù)有l(wèi)eft, right , inner , outer
  • lsuffix :  左邊的連接Key要用的下標(biāo)
  • rsuffix : 右邊的連接Key要用的下標(biāo)
  • sort:對(duì)拼接后的列名按照字典順序排序,默認(rèn)為False,F(xiàn)alse的時(shí)候,保留按照左邊的DataFrame進(jìn)行排序的順序。

3. concat

可以沿著一條軸將多個(gè)對(duì)象堆疊到一起

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

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

pandas.concat(objs, axis=0, join='outer',
              ignore_index=False, keys=None, levels=None,
              names=None, verify_integrity=False,copy=True)

參數(shù)解釋:

  • objs: 需要連接的對(duì)象集合,一般是列表或字典;
  • axis: 0代表index 連接,1代表列連接 ,默認(rèn)為0 
  • join:連接方式 ,默認(rèn)為‘outer’,還可以選擇‘inner’
  • ignore_index:默認(rèn)為False,如果為True,則是指忽略之前的Index,直接按照默認(rèn)分配index從0-N-1進(jìn)行分配,對(duì)于結(jié)合后的index并沒(méi)有啥意義的時(shí)候比較適用,用來(lái)重建索引
  • keys:用來(lái)創(chuàng)建層次化索引
  • levels: 層級(jí),用來(lái)在列上進(jìn)行劃分
  • names:指定levels中的列名
  • verify_integrity :確定新結(jié)合的數(shù)據(jù)是否有重復(fù)值,但是會(huì)很耗費(fèi)資源
  • copy:復(fù)制數(shù)據(jù) 

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談Django中view對(duì)數(shù)據(jù)庫(kù)的調(diào)用方法

    淺談Django中view對(duì)數(shù)據(jù)庫(kù)的調(diào)用方法

    今天小編就為大家分享一篇淺談Django中view對(duì)數(shù)據(jù)庫(kù)的調(diào)用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python+pandas生成指定日期和重采樣的方法

    python+pandas生成指定日期和重采樣的方法

    下面小編就為大家分享一篇python+pandas生成指定日期和重采樣的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python提取PDF發(fā)票信息保存Excel文件并制作EXE程序的全過(guò)程

    Python提取PDF發(fā)票信息保存Excel文件并制作EXE程序的全過(guò)程

    之前零散的用過(guò)一點(diǎn)python做數(shù)據(jù)處理,這次又遇到一個(gè)數(shù)據(jù)處理的小功能,下面這篇文章主要給大家介紹了關(guān)于Python提取PDF發(fā)票信息保存Excel文件并制作EXE程序的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • django admin實(shí)現(xiàn)動(dòng)態(tài)多選框表單的示例代碼

    django admin實(shí)現(xiàn)動(dòng)態(tài)多選框表單的示例代碼

    借助django-admin,可以快速得到CRUD界面,但若需要?jiǎng)?chuàng)建多選標(biāo)簽字段時(shí),需要對(duì)表單進(jìn)行調(diào)整,本文通過(guò)示例代碼給大家介紹django admin多選框表單的實(shí)現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • 使用Python快速打開一個(gè)百萬(wàn)行級(jí)別的超大Excel文件的方法

    使用Python快速打開一個(gè)百萬(wàn)行級(jí)別的超大Excel文件的方法

    這篇文章主要介紹了使用Python快速打開一個(gè)百萬(wàn)行級(jí)別的超大Excel文件的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常想詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 全面介紹python中很常用的單元測(cè)試框架unitest

    全面介紹python中很常用的單元測(cè)試框架unitest

    這篇文章主要介紹了python中很常用的單元測(cè)試框架unitest的相關(guān)資料,幫助大家更好的利用python進(jìn)行單元測(cè)試,感興趣的朋友可以了解下
    2020-12-12
  • Python利用matplotlib做圖中圖及次坐標(biāo)軸的實(shí)例

    Python利用matplotlib做圖中圖及次坐標(biāo)軸的實(shí)例

    今天小編就為大家分享一篇Python利用matplotlib做圖中圖及次坐標(biāo)軸的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Python列表list排列組合操作示例

    Python列表list排列組合操作示例

    這篇文章主要介紹了Python列表list排列組合操作,涉及Python排列組合數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • python 畫圖 圖例自由定義方式

    python 畫圖 圖例自由定義方式

    這篇文章主要介紹了python 畫圖 圖例自由定義方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python列表反轉(zhuǎn)的4種方法

    python列表反轉(zhuǎn)的4種方法

    本文主要介紹了python列表反轉(zhuǎn)的4種方法,包括reverse()方法、reversed()函數(shù)、切片語(yǔ)法和for循環(huán),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03

最新評(píng)論