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