pandas task6
第六章 連線
一、關係型連線
1.連線的基本概念
左連線,右連線,內連線,外連線。
左連線就是以左邊表裡的鍵為準,如果右邊表裡出現左表利的鍵,就新增到左表裡,否則就不新增。
內連線:只合並兩個表裡同時出現的鍵。
!如果 出現重複的鍵怎麼處理?
原則:只要兩邊同時出現的鍵,就以笛卡爾積的方式加入,如果單邊出現則根據連線的形式加入。
小結:
left:參與合併的左側DataFrame
right:參與合併的右側DataFrame
how:inner、outer、left、right其中之一
2. 值連線
兩張表根據某一列的值來連線,事實上還可以通過幾列值的組合進行連線,這種基於值的連線在pandas中可以由merge函式實現,例如:
df1 = pd.DataFrame({'Name':['San Zhang','Si Li'], 'Age':[20,30]})
df2 = pd.DataFrame({'Name':['Si Li','Wu Wang'], 'Gender':['F','M']})
df1.merge(df2, on='Name', how='left')
output:
這裡的合併都是用merge,以前都是用join。感覺merge更方便一些~
“merge包含了join操作,支援兩個df間行方向或列方向的拼接操作,預設列拼接,取交集,而join只是簡化了merge的行拼接的操作”
如果兩個表中想要連線的列不具備相同的列名,可以通過left_on和right_on指定:
df1 = pd.DataFrame({'df1_name':['San Zhang','Si Li'], 'Age':[20,30]})
df2 = pd.DataFrame({'df2_name':['Si Li','Wu Wang'], 'Gender':['F','M']})
df1.merge(df2, left_on='df1_name', right_on='df2_name', how='left')
output:
如果兩個表中的列出現了重複的列名,那麼可以通過suffixes引數指定。例如:
df1 = pd.DataFrame({'Name':['San Zhang'],'Grade':[70]})
df2 = pd.DataFrame({'Name':['San Zhang'],'Grade':[80]})
df1.merge(df2, on='Name', how='left', suffixes=['_Chinese','_Math'])
合併張三的語文成績和數學成績。
出現重複元素:例如兩位同學來自不同的班級,但是姓名相同,這種時候就要指定on引數為多個列使得正確連線:
df1 = pd.DataFrame({'Name':['San Zhang', 'San Zhang'],
'Age':[20, 21],
'Class':['one', 'two']})
df2 = pd.DataFrame({'Name':['San Zhang', 'San Zhang'],
'Gender':['F', 'M'],
'Class':['two', 'one']})
df1.merge(df2, on=['Name', 'Class'], how='left') # 正確的結果
在進行基於唯一性的連線下,如果鍵不是唯一的,那麼結果就會產生問題。如果想要保證唯一性,除了用duplicated檢查是否重複外,merge中也提供了validate引數來檢查連線的唯一性模式。這裡共有三種模式,即一對一連線1:1,一對多連線1:m,多對一連線m:1連線,第一個是指左右表的鍵都是唯一的,後面兩個分別指左表鍵唯一和右表鍵唯一。
3.索引連線
小結:
left_index:將左側的行索引用作其連線鍵的列
right_index:類似於left_index
sort:根據連線鍵對合並後的資料進行排序,預設為True。有時在處理大資料集時,禁用該選項可獲得更好的效能
suffixes:字串值元組,用於追加到重疊列名,預設為(’_x’,’_y’)
copy:設定為False,可以在某些我死情況下避免將資料複製到結果資料結構中,預設總是複製
相關文章
- Datawhale-爬蟲-Task6(學習IP相關知識)爬蟲
- Pandas之:Pandas簡潔教程
- Pandas
- Pandas - pandas.Series.pipe 函式函式
- Pandas進階貳 pandas基礎
- python pandasPython
- Pandas Series
- pandas(四)
- pandas使用
- Lesson6——Pandas Pandas描述性統計
- Pandas基礎
- Pandas入門
- pandas 列操作
- joyful pandas task
- jupyter-pandas
- Pandas概念(一)
- pandas用法大全
- Pandas fillna('Missing')
- Pandas之:深入理解Pandas的資料結構資料結構
- Pandas缺失值處理 | 輕鬆玩轉Pandas(3)
- 【Pandas基礎教程】第02講 Pandas讀取資料
- python excel pandas openpyxlPythonExcel
- Pandas - DataFrame.loc
- pandas:多層索引索引
- pandas小習題
- Pandas的使用技巧
- pandas用法總結
- Pandas DataFrame常用方法
- [python]pandas學習Python
- pandas merge報錯
- pandas使用與思考
- Pandas資料結構詳解 | 輕鬆玩轉Pandas(1)資料結構
- Pandas基本功能詳解 | 輕鬆玩轉Pandas(2)
- pandas讀 .sql檔案SQL
- pandas - 基礎屬性
- Pandas基礎學習
- Pandas基礎介紹
- JVM上的Pandas: tablesawJVM