【Pandas】merge合併

1.on屬性

import pandas as pd

df1 = pd.DataFrame({"a": ["A1", "A2", "A3"],
                    "c": ["C1", "C2", "C3"],
                    "b": ["B1", "B2", "B3"],})
df2 = pd.DataFrame({"d": ["D1", "D2", "D3"],
                    "e": ["E1", "E2", "E3"],
                    "b": ["B1", "B2", "B3"]})

# 特點是 ,兩個DataFrame都有一樣的b列

new_df = pd.merge(df1, df2, on="b")  # 以
print(new_df)
# 輸出結果:
#     a   c   b   d   e
# 0  A1  C1  B1  D1  E1
# 1  A2  C2  B2  D2  E2
# 2  A3  C3  B3  D3  E3

2.how屬性

df3 = pd.DataFrame({"a": ["A1", "A2", "A3", "A4"],
                    "c": ["C1", "C2", "C3", "C4"],
                    "b1": ["B1", "B1", "B2", "B3"],
                    "b2": ["B1", "B2", "B1", "B2"]})
df4 = pd.DataFrame({"d": ["D1", "D2", "D3", "D4"],
                    "e": ["E1", "E2", "E3", "E4"],
                    "b1": ["B1", "B2", "B2", "B4"],
                    "b2": ["B1", "B1", "B1", "B1"]})
new_df2 = pd.merge(df3, df4, on=["b1", "b2"], how="inner")
print(new_df2)
# 輸出結果:
#     a   c  b1  b2   d   e
# 0  A1  C1  B1  B1  D1  E1
# 1  A3  C3  B2  B1  D2  E2
# 2  A3  C3  B2  B1  D3  E3

new_df2 = pd.merge(df3, df4, on=["b1", "b2"], how="outer")
print(new_df2)
# 輸出結果:
#      a    c  b1  b2    d    e
# 0   A1   C1  B1  B1   D1   E1
# 1   A2   C2  B1  B2  NaN  NaN
# 2   A3   C3  B2  B1   D2   E2
# 3   A3   C3  B2  B1   D3   E3
# 4   A4   C4  B3  B2  NaN  NaN
# 5  NaN  NaN  B4  B1   D4   E4

new_df2 = pd.merge(df3, df4, on=["b1", "b2"], how="left")
print(new_df2)
# 輸出結果:
#     a   c  b1  b2    d    e
#     a   c  b1  b2    d    e
# 0  A1  C1  B1  B1   D1   E1
# 1  A2  C2  B1  B2  NaN  NaN
# 2  A3  C3  B2  B1   D2   E2
# 3  A3  C3  B2  B1   D3   E3
# 4  A4  C4  B3  B2  NaN  NaN

new_df2 = pd.merge(df3, df4, on=["b1", "b2"], how="right")
print(new_df2)
# 輸出結果:
#      a    c  b1  b2   d   e
# 0   A1   C1  B1  B1  D1  E1
# 1   A3   C3  B2  B1  D2  E2
# 2   A3   C3  B2  B1  D3  E3
# 3  NaN  NaN  B4  B1  D4  E4

3.suffixes屬性

# 兩個DataFrame都有data不易區分
df5 = pd.DataFrame({"k": [1, 2, 3], "data": [4, 5, 6]})
df6 = pd.DataFrame({"k": [1, 1, 2], "data": [7, 8, 9]})
new_df3 = pd.merge(df5, df6, on="k", suffixes=["_left", "_right"], how="outer")
print(new_df3)
# 輸出結果:
#    k  data_left  data_right
# 0  1          4         7.0
# 1  1          4         8.0
# 2  2          5         9.0
# 3  3          6         NaN
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章