利用pandas如何實(shí)現(xiàn)類似sql中的left join操作
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è)字段來進(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ù)處理過程中會(huì)遇到多個(gè)數(shù)據(jù)集之間進(jìn)行拼接的操作,這里由于平時(shí)都是用的Pandas讀取的數(shù)據(jù)集,所以一般是針對(duì)的是DataFrame類型的數(shù)據(jù)進(jìn)行拼接操作。
1. merge
用于通過一個(gè)或多個(gè)鍵將兩個(gè)數(shù)據(jù)集的行連接起來,類似于 SQL 中的 JOIN。
該函數(shù)的典型應(yīng)用場(chǎng)景是,針對(duì)同一個(gè)主鍵存在兩張包含不同字段的表,現(xiàn)在我們想把他們整合到一張表里。
在此典型情況下,結(jié)果集的行數(shù)并沒有增加,列數(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或者帶列名的Serieshow:連接方式,類似sql語句中的(left ,right,inner,outer),這里默認(rèn)為'inner', 可選的參數(shù)有l(wèi)eft, right , inner , outeron: 連接的列名或者index, 也就是指明2個(gè)要連接的對(duì)象之間通過哪個(gè)列名或者索引名進(jìn)行連接。left_on: 指定左邊的DataFrame以哪個(gè)列名或者索引名進(jìn)行連接right_on:指定右邊的DataFrame以哪個(gè)列名或者索引名進(jìn)行連接left_index:用左邊的DataFrame當(dāng)做連接Keyright_index:用右邊的DataFrame當(dāng)做連接Keysort:按照字典順序?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è)簡便的方法用于將兩個(gè)DataFrame中的不同的列索引合并成為一個(gè)DataFrame
df.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
參數(shù)解釋:
other:另一個(gè)待拼接的DataFrame或者有名稱列表的Serieson:連接的列名或者index, 也就是指明2個(gè)要連接的對(duì)象之間通過哪個(gè)列名或者索引名進(jìn)行連接。how:連接方式,類似sql語句中的(left ,right,inner,outer),這里默認(rèn)為'left', 可選的參數(shù)有l(wèi)eft, right , inner , outerlsuffix: 左邊的連接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ù)庫中的全連接(UNION ALL),可以指定按某個(gè)軸進(jìn)行連接,也可以指定連接的方式j(luò)oin(outer,inner 只有這兩種)。
與數(shù)據(jù)庫不同的是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)為0join:連接方式 ,默認(rèn)為‘outer’,還可以選擇‘inner’ignore_index:默認(rèn)為False,如果為True,則是指忽略之前的Index,直接按照默認(rèn)分配index從0-N-1進(jìn)行分配,對(duì)于結(jié)合后的index并沒有啥意義的時(shí)候比較適用,用來重建索引keys:用來創(chuàng)建層次化索引levels: 層級(jí),用來在列上進(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)文章
解決安裝pytorch運(yùn)行import torch出錯(cuò)ModuleNotFoundError:No
安裝PyTorch時(shí)遇到`ModuleNotFoundError: No module named 'torch'`錯(cuò)誤,通常是由于Python版本不匹配或conda未升級(jí)導(dǎo)致的,解決方法是安裝特定版本的PyTorch,并使用以下代碼檢查安裝是否成功2025-12-12
Python使用mmap實(shí)現(xiàn)內(nèi)存映射文件操作
內(nèi)存映射通??梢蕴岣逫/O的性能,本文主要介紹了Python使用mmap實(shí)現(xiàn)內(nèi)存映射文件操作,分享給大家,感興趣的可以了解一下2021-06-06
python使用json序列化datetime類型實(shí)例解析
這篇文章主要介紹了python使用json序列化datetime類型實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
Python實(shí)現(xiàn)定時(shí)自動(dòng)關(guān)閉的tkinter窗口方法
今天小編就為大家分享一篇Python實(shí)現(xiàn)定時(shí)自動(dòng)關(guān)閉的tkinter窗口方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
Python中index()函數(shù)與find()函數(shù)的區(qū)別詳解
這篇文章主要介紹了Python中index()函數(shù)與find()函數(shù)的區(qū)別詳解,Python index()方法檢測(cè)字符串中是否包含子字符串 str ,如果指定beg開始和end結(jié)束范圍,則檢查是否包含在指定范圍內(nèi),需要的朋友可以參考下2023-08-08
Python中用try-except-finally處理異常問題
這篇文章主要介紹了Python中用try-except-finally處理異常問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
python關(guān)于os.walk函數(shù)查找windows文件方式
這篇文章主要介紹了python關(guān)于os.walk函數(shù)查找windows文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
windows下的pycharm安裝及其設(shè)置中文菜單
這篇文章主要介紹了windows下的pycharm安裝及其設(shè)置中文菜單,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

