Python利用pandas進(jìn)行數(shù)據(jù)合并詳解
當(dāng)使用Python中的pandas庫時(shí),merge函數(shù)是用于合并(或連接)兩個(gè)數(shù)據(jù)框(DataFrame)的重要工具。它類似于SQL中的JOIN操作,允許你根據(jù)一個(gè)或多個(gè)鍵(key)將兩個(gè)數(shù)據(jù)框連接起來。
merge函數(shù)的基本語法如下
pd.merge( left, # 要合并的左側(cè) DataFrame right, # 要合并的右側(cè) DataFrame how='inner', # 連接方式,包括 'left', 'right', 'outer', 'inner',默認(rèn)為 'inner' on=None, # 用于連接的列名,必須存在于左側(cè)和右側(cè) DataFrame 中 left_on=None, # 左側(cè) DataFrame 用于連接的列名 right_on=None, # 右側(cè) DataFrame 用于連接的列名 left_index=False, # 如果為 True,則使用左側(cè) DataFrame 的索引作為連接鍵 right_index=False, # 如果為 True,則使用右側(cè) DataFrame 的索引作為連接鍵 suffixes=('_x', '_y'), # 字符串后綴,用于重疊列名的處理 sort=False, # 根據(jù)連接鍵對(duì)合并后的數(shù)據(jù)進(jìn)行排序 copy=True, # 如果為 False,可以提高性能,但是在某些情況下會(huì)修改原始數(shù)據(jù) )
下面詳細(xì)解釋每個(gè)參數(shù)的用法:
left
和right
:要連接的左右兩個(gè)數(shù)據(jù)框,可以是DataFrame對(duì)象、Series對(duì)象或者帶有相同列名的字典。on
:指定用于連接的列名,如果兩個(gè)數(shù)據(jù)框中的列名相同,可以直接指定為列名,如果列名不同,可以通過left_on
和right_on
參數(shù)分別指定左右兩個(gè)數(shù)據(jù)框的列名。how
:指定連接的方式,默認(rèn)為'inner'。可選的取值有:- 'inner':內(nèi)連接,只返回兩個(gè)數(shù)據(jù)框中鍵匹配的行。
- 'outer':外連接,返回兩個(gè)數(shù)據(jù)框中所有的行,并用NaN填充缺失的值。
- 'left':左連接,返回左側(cè)數(shù)據(jù)框中所有的行,并用NaN填充右側(cè)數(shù)據(jù)框中缺失的值。
- 'right':右連接,返回右側(cè)數(shù)據(jù)框中所有的行,并用NaN填充左側(cè)數(shù)據(jù)框中缺失的值。
left_on
和right_on
:如果要連接的列名不同,可以使用這兩個(gè)參數(shù)分別指定左右兩個(gè)數(shù)據(jù)框中用于連接的列名。left_index
和right_index
:如果要根據(jù)索引進(jìn)行連接,可以將這兩個(gè)參數(shù)設(shè)為True。sort
:指定是否按照鍵對(duì)數(shù)據(jù)進(jìn)行排序,默認(rèn)為True。suffixes
:如果兩個(gè)數(shù)據(jù)框中存在重復(fù)的列名,可以使用這個(gè)參數(shù)為它們添加后綴以區(qū)分,默認(rèn)為('_x', '_y')。copy
:指定是否復(fù)制數(shù)據(jù),默認(rèn)為True。如果設(shè)置為False,可以避免復(fù)制數(shù)據(jù)而提高性能。indicator
:指定是否在結(jié)果數(shù)據(jù)框中添加一個(gè)表示連接方式的特殊列,默認(rèn)為False。validate
:指定連接操作的有效性檢查方式,可選的取值有None、'one_to_one'、'one_to_many'、'many_to_one'和'many_to_many'。
基本用法
merged_df = pd.merge(left_df, right_df, how='outer', on=['店鋪名稱']) # 連接方式,包括 'left', 'right', 'outer', 'inner',默認(rèn)為 'inner' print(merged_df)
指定不同的列名
merged_df = pd.merge(left_df, right_df, how='outer', left_on='店鋪名稱', right_on='店鋪名稱2') print(merged_df)
處理重復(fù)列名,相同列名加后綴
merged_df = pd.merge(left_df, right_df, how='outer', on=['店鋪名稱'], suffixes=('_left', '_right')) print(merged_df)
根據(jù)索引進(jìn)行合并
merged_df = pd.merge(left_df, right_df, how='outer', left_index=True, right_index=True) print(merged_df)
開啟一列標(biāo)記列,標(biāo)記數(shù)據(jù)來源
merged_df = pd.merge(left_df, right_df, how='outer', on=['店鋪名稱','訂單號(hào)'], indicator=True) print(merged_df)
完整代碼
import pandas as pd # 讀取兩個(gè) Excel 文件 left_df = pd.read_excel('C:\\Users\\liuchunlin2\\Desktop\\數(shù)據(jù)1.xlsx',sheet_name='Sheet2') right_df = pd.read_excel('C:\\Users\\liuchunlin2\\Desktop\\數(shù)據(jù)2.xlsx',sheet_name='Sheet2') #基本用法 merged_df = pd.merge(left_df, right_df, how='outer', on=['店鋪名稱']) # 連接方式,包括 'left', 'right', 'outer', 'inner',默認(rèn)為 'inner' print(merged_df) #指定不同的列名 merged_df = pd.merge(left_df, right_df, how='outer', left_on='店鋪名稱', right_on='店鋪名稱2') print(merged_df) #處理重復(fù)列名,相同列名加后綴 merged_df = pd.merge(left_df, right_df, how='outer', on=['店鋪名稱'], suffixes=('_left', '_right')) print(merged_df) #根據(jù)索引進(jìn)行合并 merged_df = pd.merge(left_df, right_df, how='outer', left_index=True, right_index=True) print(merged_df) #開啟一列標(biāo)記列,標(biāo)記數(shù)據(jù)來源 merged_df = pd.merge(left_df, right_df, how='outer', on=['店鋪名稱','訂單號(hào)'], indicator=True) print(merged_df)
數(shù)據(jù)一:
數(shù)據(jù)二:
以上就是Python利用pandas進(jìn)行數(shù)據(jù)合并詳解的詳細(xì)內(nèi)容,更多關(guān)于Python pandas數(shù)據(jù)合并的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實(shí)例
- 詳解pandas數(shù)據(jù)合并與重塑(pd.concat篇)
- Python基礎(chǔ)之pandas數(shù)據(jù)合并
- pandas中DataFrame數(shù)據(jù)合并連接(merge、join、concat)
- 一文搞懂Python中Pandas數(shù)據(jù)合并
- Python必備技巧之Pandas數(shù)據(jù)合并函數(shù)
- pandas實(shí)現(xiàn)數(shù)據(jù)合并的示例代碼
- Python?Pandas數(shù)據(jù)合并pd.merge用法詳解
- Python?pandas數(shù)據(jù)合并merge函數(shù)用法詳解
- Pandas數(shù)據(jù)合并的兩種實(shí)現(xiàn)方法
- Pandas中數(shù)據(jù)合并的實(shí)現(xiàn)
相關(guān)文章
python實(shí)現(xiàn)zabbix發(fā)送短信腳本
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)zabbix發(fā)送短信腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09使用python serial 獲取所有的串口名稱的實(shí)例
今天小編就為大家分享一篇使用python serial 獲取所有的串口名稱的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07Matplotlib實(shí)現(xiàn)各種條形圖繪制
這篇文章主要介紹了Matplotlib實(shí)現(xiàn)各種條形圖繪制,文章通過利用 plt.bar 方法實(shí)現(xiàn)各種條形圖繪制,內(nèi)容詳細(xì)具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-03-03使用Python 統(tǒng)計(jì)文件夾內(nèi)所有pdf頁數(shù)的小工具
這篇文章主要介紹了Python 統(tǒng)計(jì)文件夾內(nèi)所有pdf頁數(shù)的小工具,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03將 Ubuntu 16 和 18 上的 python 升級(jí)到最新 python3.8 的方法教程
這篇文章主要介紹了如何將 Ubuntu 16 和 18 上的 python 升級(jí)到最新 3.8 版,本文通過實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03何用Python實(shí)現(xiàn)一個(gè) “系統(tǒng)聲音” 的實(shí)時(shí)律動(dòng)掛件
這篇文章將給大家介紹了如何用 Python 實(shí)現(xiàn)一個(gè) “系統(tǒng)聲音” 的實(shí)時(shí)律動(dòng)掛件,采集后直接實(shí)時(shí)地在電腦上繪制波形動(dòng)畫,主要是用來作為 FL Studio 播放時(shí)的一個(gè)桌面小掛件,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2024-01-01python 使用cx-freeze打包程序的實(shí)現(xiàn)
這篇文章主要介紹了python 使用cx-freeze打包程序的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03