Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Hợp nhất DataFrame Pandas với Outer Join

Để hợp nhất (merge) hai DataFrame Pandas, dùng hàm merge(). Outer join thực hiện bằng tham số how="outer".

Tạo DataFrame

import pandas as pd

# DataFrame1
dataFrame1 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
    "Units": [100, 150, 110, 80, 110, 90]
})

# DataFrame2
dataFrame2 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
})

Merge Outer Join

mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car', how="outer")

Ví dụ hoàn chỉnh

import pandas as pd

dataFrame1 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
    "Units": [100, 150, 110, 80, 110, 90]
})
print("DataFrame1 ...\n", dataFrame1)

dataFrame2 = pd.DataFrame({
    "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
    "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
})
print("\nDataFrame2 ...\n", dataFrame2)

mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car', how="outer")
print("\nKết quả Outer Join:\n", mergedRes)

Kết quả đầu ra

DataFrame1 ...
       Car  Units
0      BMW    100
1    Lexus    150
2     Audi    110
3  Mustang     80
4  Bentley    110
5   Jaguar     90

DataFrame2 ...
       Car  Reg_Price
0      BMW       7000
1    Lexus       1500
2    Tesla       5000
3  Mustang       8000
4  Mercedes      9000
5   Jaguar       6000

Kết quả Outer Join:
       Car  Units  Reg_Price
0      BMW  100.0     7000.0
1    Lexus  150.0     1500.0
2     Audi  110.0        NaN
3  Mustang   80.0     8000.0
4  Bentley  110.0        NaN
5   Jaguar   90.0     6000.0
6    Tesla   NaN      5000.0
7  Mercedes  NaN      9000.0

Giải thích

  • Outer join: giữ tất cả hàng từ cả hai DataFrame.
  • Cột chung "Car" làm khóa nối.
  • Giá trị thiếu → NaN (float). Units và Reg_Price thành float do NaN.
  • BMW, Lexus, Mustang, Jaguar: có ở cả hai → đầy đủ.
  • Audi, Bentley: chỉ ở df1 → Reg_Price = NaN.
  • Tesla, Mercedes: chỉ ở df2 → Units = NaN.