昨天,我在python利用pandas對兩張excel表合併(二)一文中對兩張表按列merge時on的用法。今天分享一下,merge傳參時,另外一個參數how的方法。在學完how的用法以後,對兩張表的合併學習基本上就結束了。
一、以下圖所示:
左表中name分別是:bob, millor, jiken。右表中name有bob, millor, lucy。左表有jiken而沒有lucy, 右表有lucy而沒有jiken。
how參數有4個值{‘inner’, ‘outer’, ‘right’,‘left’}聽起來可能會讓人以爲繁瑣,看完下面的例子用法很快就會明白。
二、代碼:python
# 當how爲inner時,同時,how的默認值也是inner
>>> import pandas as pd
>>> df1 = pd.read_excel(r'D:/myExcel/1.xlsx', 'Sheet1')
>>> df2 = pd.read_excel(r'D:/myExcel/2.xlsx', 'Sheet1')
# df1就是上述左表,df2就是上圖中的右表
>>> df = pd.merge(df1, df2, how='inner', on=['name'])
# 有結果可知,當how爲inner時,作左右錶鏈接實際取的是name的交集,即兩表
#name中的共同部分
>>> df
name math Chinese
0 bob 23 21
1 millor 32 19
# 當how爲outer時,取的是name的並集,無值的補爲NAN,空值的意思
>>> df = pd.merge(df1, df2, how='outer', on=['name'])
>>> df
name math Chinese
0 bob 23.0 21.0
1 millor 32.0 19.0
2 jiken 45.0 NaN
3 lucy NaN 86.0
# 當how爲left時,即以左表的name的值爲標準,左表的name必須保留,右表的name中有值
# 而左表沒有則刪除
>>> df = pd.merge(df1, df2, how='left', on=['name'])
# 結果有jiken卻沒有lucy
>>> df
name math Chinese
0 bob 23 21.0
1 millor 32 19.0
2 jiken 45 NaN
# 當how爲right時,保留右表而不保留左表中的不一樣部分
>>> df = pd.merge(df1, df2, how='right', on=['name'])
# 結果保留了lucy卻刪除了jiken
>>> df
name math Chinese
0 bob 23.0 21
1 millor 32.0 19
2 lucy NaN 86
經過對how的用法解釋,兩表之間的鏈接已經很是清楚了。若是想有更深刻的瞭解,能夠下載pandas的官方文檔。或者在個人公衆號:python小工具。回覆python獲取。雖然是英文的,但並不難理解,建議下載。
哈哈,以上就是對兩錶鏈接的介紹。明天我將開始介紹多表之間的cancat和merge。若是有興趣,歡迎關注:python小工具。讓咱們一塊兒努力,讓辦公變得更方便。
微信
本文分享自微信公衆號 - python小工具(pythonSmallTools)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。工具