用法:
DataFrame.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, indicator=False, validate=None)
使用 database-style 連接合並 DataFrame 或命名的 Series 對象。
命名的 Series 對象被視為具有單個命名列的 DataFrame。
連接是在列或索引上完成的。如果在列上連接列,則 DataFrame 索引將被忽略。否則,如果加入索引上的索引或列上的索引,則索引將被傳遞。執行交叉合並時,不允許合並列規範。
警告
如果兩個鍵列都包含鍵為空值的行,則這些行將相互匹配。這與通常的 SQL 連接行為不同,並可能導致意外結果。
- right:DataFrame 或命名係列
要合並的對象。
- how:{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’},默認 ‘inner’
要執行的合並類型。
left:僅使用左幀中的鍵,類似於 SQL 左外連接;保留 key 順序。
右:僅使用右框架中的鍵,類似於 SQL 右外連接;保留 key 順序。
外部:使用來自兩個幀的鍵並集,類似於 SQL 完全外部聯接;按字典順序對鍵進行排序。
內部:使用來自兩個幀的鍵的交集,類似於 SQL 內部連接;保留左鍵的順序。
cross:從兩個幀創建笛卡爾積,保留左鍵的順序。
- on:標簽或列表
要加入的列或索引級別名稱。這些必須在兩個 DataFrame 中都可以找到。如果
on
為 None 並且不合並索引,則默認為兩個 DataFrame 中列的交集。- left_on:標簽或列表,或array-like
要在左側 DataFrame 中加入的列或索引級別名稱。也可以是左側DataFrame長度的數組或數組列表。這些數組被視為列。
- right_on:標簽或列表,或array-like
要在右側 DataFrame 中加入的列或索引級別名稱。也可以是正確DataFrame長度的數組或數組列表。這些數組被視為列。
- left_index:布爾值,默認為 False
使用左側 DataFrame 中的索引作為連接鍵。如果是 MultiIndex,則另一個 DataFrame 中的鍵數(索引或列數)必須與級別數匹配。
- right_index:布爾值,默認為 False
使用右側 DataFrame 中的索引作為連接鍵。與left_index 相同的注意事項。
- sort:布爾值,默認為 False
在結果 DataFrame 中按字典順序對連接鍵進行排序。如果為 False,則連接鍵的順序取決於連接類型(how 關鍵字)。
- suffixes:list-like,默認為 (“_x”, “_y”)
長度為 2 的序列,其中每個元素可選地是一個字符串,指示要分別添加到
left
和right
中的重疊列名稱的後綴。傳遞None
的值而不是字符串,以指示來自left
或right
的列名應保留為 as-is,不帶後綴。至少其中一個值不得為無。- copy:布爾值,默認為真
如果為 False,請盡可能避免複製。
- indicator:bool 或 str,默認為 False
如果為 True,則在輸出 DataFrame 中添加一個名為 “_merge” 的列,其中包含有關每行來源的信息。通過提供字符串參數,可以為該列指定不同的名稱。該列將有一個分類類型,其值為 “left_only” 用於合並鍵僅出現在左側 DataFrame 中的觀察,“right_only” 用於其合並鍵僅出現在右側 DataFrame 中的觀察,以及 “both” 如果觀察的合並鍵在兩個 DataFrame 中都可以找到。
- validate:str,可選
如果指定,則檢查合並是否屬於指定類型。
“one_to_one” 或 “1:1”:檢查合並鍵在左右數據集中是否唯一。
“one_to_many” 或 “1:m”:檢查合並鍵在左側數據集中是否唯一。
“many_to_one” 或 “m:1”:檢查合並鍵在正確的數據集中是否唯一。
“many_to_many” 或 “m:m”:允許,但不會導致檢查。
- DataFrame
兩個合並對象的 DataFrame。
參數:
返回:
注意:
支持將索引級別指定為
on
、left_on
和right_on
參數在 0.23.0 版中添加 對合並命名係列對象的支持在 0.24.0 版中添加例子:
>>> df1 = pd.DataFrame({'lkey':['foo', 'bar', 'baz', 'foo'], ... 'value':[1, 2, 3, 5]}) >>> df2 = pd.DataFrame({'rkey':['foo', 'bar', 'baz', 'foo'], ... 'value':[5, 6, 7, 8]}) >>> df1 lkey value 0 foo 1 1 bar 2 2 baz 3 3 foo 5 >>> df2 rkey value 0 foo 5 1 bar 6 2 baz 7 3 foo 8
在 lkey 和 rkey 列上合並 df1 和 df2。值列附加了默認後綴 _x 和 _y。
>>> df1.merge(df2, left_on='lkey', right_on='rkey') lkey value_x rkey value_y 0 foo 1 foo 5 1 foo 1 foo 8 2 foo 5 foo 5 3 foo 5 foo 8 4 bar 2 bar 6 5 baz 3 baz 7
合並 DataFrames df1 和 df2,並在任何重疊列上附加指定的左右後綴。
>>> df1.merge(df2, left_on='lkey', right_on='rkey', ... suffixes=('_left', '_right')) lkey value_left rkey value_right 0 foo 1 foo 5 1 foo 1 foo 8 2 foo 5 foo 5 3 foo 5 foo 8 4 bar 2 bar 6 5 baz 3 baz 7
合並 DataFrames df1 和 df2,但如果 DataFrames 有任何重疊列,則會引發異常。
>>> df1.merge(df2, left_on='lkey', right_on='rkey', suffixes=(False, False)) Traceback (most recent call last): ... ValueError:columns overlap but no suffix specified: Index(['value'], dtype='object')
>>> df1 = pd.DataFrame({'a':['foo', 'bar'], 'b':[1, 2]}) >>> df2 = pd.DataFrame({'a':['foo', 'baz'], 'c':[3, 4]}) >>> df1 a b 0 foo 1 1 bar 2 >>> df2 a c 0 foo 3 1 baz 4
>>> df1.merge(df2, how='inner', on='a') a b c 0 foo 1 3
>>> df1.merge(df2, how='left', on='a') a b c 0 foo 1 3.0 1 bar 2 NaN
>>> df1 = pd.DataFrame({'left':['foo', 'bar']}) >>> df2 = pd.DataFrame({'right':[7, 8]}) >>> df1 left 0 foo 1 bar >>> df2 right 0 7 1 8
>>> df1.merge(df2, how='cross') left right 0 foo 7 1 foo 8 2 bar 7 3 bar 8
相關用法
- Python pandas.DataFrame.melt用法及代碼示例
- Python pandas.DataFrame.memory_usage用法及代碼示例
- Python pandas.DataFrame.mod用法及代碼示例
- Python pandas.DataFrame.mask用法及代碼示例
- Python pandas.DataFrame.mul用法及代碼示例
- Python pandas.DataFrame.multiply用法及代碼示例
- Python pandas.DataFrame.max用法及代碼示例
- Python pandas.DataFrame.mode用法及代碼示例
- Python pandas.DataFrame.min用法及代碼示例
- Python pandas.DataFrame.ewm用法及代碼示例
- Python pandas.DataFrame.dot用法及代碼示例
- Python pandas.DataFrame.apply用法及代碼示例
- Python pandas.DataFrame.combine_first用法及代碼示例
- Python pandas.DataFrame.cumsum用法及代碼示例
- Python pandas.DataFrame.rename用法及代碼示例
- Python pandas.DataFrame.to_numpy用法及代碼示例
- Python pandas.DataFrame.dtypes用法及代碼示例
- Python pandas.DataFrame.cummin用法及代碼示例
- Python pandas.DataFrame.truncate用法及代碼示例
- Python pandas.DataFrame.sparse.from_spmatrix用法及代碼示例
注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.DataFrame.merge。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。