利用pandas如何實現(xiàn)類似sql中的left join操作
pandas實現(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ù)哪個字段來進行連接,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']] # 將列進行重命名 new_col = ['location code', 'location name', 'ActiveFlag','owner name','the location nature'] df.columns = new_col print(df) # 導出為csv df.to_csv(path_or_buf=r"3.csv", encoding="utf_8_sig")
pandas數(shù)據(jù)拼接操作merge、join、concat
在做數(shù)據(jù)處理過程中會遇到多個數(shù)據(jù)集之間進行拼接的操作,這里由于平時都是用的Pandas讀取的數(shù)據(jù)集,所以一般是針對的是DataFrame類型的數(shù)據(jù)進行拼接操作。
1. merge
用于通過一個或多個鍵將兩個數(shù)據(jù)集的行連接起來,類似于 SQL 中的 JOIN。
該函數(shù)的典型應用場景是,針對同一個主鍵存在兩張包含不同字段的表,現(xiàn)在我們想把他們整合到一張表里。
在此典型情況下,結(jié)果集的行數(shù)并沒有增加,列數(shù)則為兩個元數(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
: 要連接的目標數(shù)據(jù),類型為DataFrame或者帶列名的Serieshow
:連接方式,類似sql語句中的(left ,right,inner,outer),這里默認為'inner', 可選的參數(shù)有l(wèi)eft, right , inner , outeron
: 連接的列名或者index, 也就是指明2個要連接的對象之間通過哪個列名或者索引名進行連接。left_on
: 指定左邊的DataFrame以哪個列名或者索引名進行連接right_on
:指定右邊的DataFrame以哪個列名或者索引名進行連接left_index
:用左邊的DataFrame當做連接Keyright_index
:用右邊的DataFrame當做連接Keysort
:按照字典順序?qū)B接Key進行排序,默認為False,默認連接鍵的順序取決于連接類型suffixes
:連接后的列名默認帶下標 ('_x' , '_y')copy
:默認復制,如果設置為False,則盡可能的避免復制
a . 默認以相同的列名進行連接鍵
2. join
拼接列,主要用于索引上的合并,提供了一個簡便的方法用于將兩個DataFrame中的不同的列索引合并成為一個DataFrame
df.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
參數(shù)解釋:
other
:另一個待拼接的DataFrame或者有名稱列表的Serieson
:連接的列名或者index, 也就是指明2個要連接的對象之間通過哪個列名或者索引名進行連接。how
:連接方式,類似sql語句中的(left ,right,inner,outer),這里默認為'left', 可選的參數(shù)有l(wèi)eft, right , inner , outerlsuffix
: 左邊的連接Key要用的下標rsuffix
: 右邊的連接Key要用的下標sort
:對拼接后的列名按照字典順序排序,默認為False,F(xiàn)alse的時候,保留按照左邊的DataFrame進行排序的順序。
3. concat
可以沿著一條軸將多個對象堆疊到一起
concat方法相當于數(shù)據(jù)庫中的全連接(UNION ALL),可以指定按某個軸進行連接,也可以指定連接的方式join(outer,inner 只有這兩種)。
與數(shù)據(jù)庫不同的是concat不會去重,要達到去重的效果可以使用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
: 需要連接的對象集合,一般是列表或字典;axis
: 0代表index 連接,1代表列連接 ,默認為0join
:連接方式 ,默認為‘outer’,還可以選擇‘inner’ignore_index
:默認為False,如果為True,則是指忽略之前的Index,直接按照默認分配index從0-N-1進行分配,對于結(jié)合后的index并沒有啥意義的時候比較適用,用來重建索引keys
:用來創(chuàng)建層次化索引levels
: 層級,用來在列上進行劃分names
:指定levels中的列名verify_integrity
:確定新結(jié)合的數(shù)據(jù)是否有重復值,但是會很耗費資源copy
:復制數(shù)據(jù)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
淺談Django中view對數(shù)據(jù)庫的調(diào)用方法
今天小編就為大家分享一篇淺談Django中view對數(shù)據(jù)庫的調(diào)用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python提取PDF發(fā)票信息保存Excel文件并制作EXE程序的全過程
之前零散的用過一點python做數(shù)據(jù)處理,這次又遇到一個數(shù)據(jù)處理的小功能,下面這篇文章主要給大家介紹了關于Python提取PDF發(fā)票信息保存Excel文件并制作EXE程序的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-11-11django admin實現(xiàn)動態(tài)多選框表單的示例代碼
借助django-admin,可以快速得到CRUD界面,但若需要創(chuàng)建多選標簽字段時,需要對表單進行調(diào)整,本文通過示例代碼給大家介紹django admin多選框表單的實現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧2021-05-05使用Python快速打開一個百萬行級別的超大Excel文件的方法
這篇文章主要介紹了使用Python快速打開一個百萬行級別的超大Excel文件的方法,本文通過實例代碼給大家介紹的非常想詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03Python利用matplotlib做圖中圖及次坐標軸的實例
今天小編就為大家分享一篇Python利用matplotlib做圖中圖及次坐標軸的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07