Pandas學習筆記 06 連線
第六章 連線 總結
目錄1 關係型連線
1.1 連線的基本概念
類似SQL
連線,連線方式包括左連線left
、右連線right
、內連線inner
、外連線outer
。
同一表中鍵重複時以笛卡爾積方法連線。
1.2 值連線 merge
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
how
:指定連線方式(left, right, inner, outer, cross
)。
on
:指定連線的鍵。
left_on, right_on
:指定名稱不同列的連線。
suffixes
:指定名稱重複列的字尾。
注意:如果兩個鍵列都包含該鍵為空值的行,則這些行將相互匹配。這與通常的SQL連線行為不同,可能會導致意想不到的結果。
1.3 索引連線 join
DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
how
:指定連線方式(left, right, inner, outer, cross
on
:指定連線的鍵。
lsuffix, rsuffix
:指定名稱重複列的字尾。
注意:如果需要指定列作為新表索引,需要set_index()
再使用join
。
df.set_index('key').join(other.set_index('key'))
# 或
df.join(other.set_index('key'), on='key')
2 方向連線
2.1 多表拼接concat
axis
:指定拼接方向,預設axis=0
,表示縱向拼接,多用於樣本拼接;axis=1
表示橫向拼接,常用於欄位或特徵拼接。
縱向拼接會根據列索引對齊,橫向拼接回根據行索引對齊。
join
:指定連線方式,預設join=outer
join=inner
表示保留兩個表都出現過的列。
當確認要使用多表直接的方向合併時,尤其是橫向的合併,可以先用reset_index
方法恢復預設整數索引再進行合併,防止出現由索引的誤對齊和重複索引的笛卡爾積帶來的錯誤結果。
keys
:產生多級索引對資料來源進行標記
2.2 序列與表的合併 append, assign
append
可以將序列新增到錶行的末尾。
對於預設整數序列的索引,可以使用ignore_index=True
對新序列對應的索引自動標號,否則必須對Series
指定name
屬性。
assign
可以將序列新增到表列的末尾。
均不會改動原表,只返回臨時副本
3 類連線操作
3.1 比較compare
compare
:比較兩個表或者序列的不同處並將其彙總展示。
compare
返回不同值所在的行列,如果相同則會被填充為缺失值NaN
。
設定keep_shape=True
可以完整顯示所有元素的比較情況。
3.2 組合combine
combine
:將兩張表按照一定的規則進行組合,規則以函式形式傳入,進行規則比較時會自動進行列索引的對齊。
設定overtwrite
引數為False
可以保留被呼叫表中未出現在傳入的引數表中的列,而不會設定為缺失值。