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

Python Pandas - Gộp DataFrame với quan hệ một-nhiều

Để gộp DataFrame Pandas, sử dụng hàm merge(). Quan hệ một-nhiều (one-to-many) được thực hiện trên cả hai DataFrame bằng cách thiết lập trong tham số validate của hàm merge() như sau:

validate = "one-to-many" hoặc validate = "1:m"

Quan hệ một-nhiều kiểm tra xem khóa gộp có duy nhất trong tập dữ liệu bên trái hay không.

Trước tiên, tạo DataFrame thứ nhất:

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

Tạo DataFrame thứ hai:

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

Ví dụ hoàn chỉnh

Mã nguồn đầy đủ:

import pandas as pd
# Tạo DataFrame1
dataFrame1 = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
        "Units": [100, 150, 110, 80, 110, 90]
    }
)
print("DataFrame1 ...\n", dataFrame1)
# Tạo DataFrame2
dataFrame2 = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
        "Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
    }
)
print("\nDataFrame2 ...\n", dataFrame2)
# gộp DataFrames với "one-to-many" trong tham số "validate"
mergedRes = pd.merge(dataFrame1, dataFrame2, validate="one_to_many")
print("\nDataFrame gộp với quan hệ một-nhiều...\n", mergedRes)

Kết quả

Chương trình sẽ tạo ra kết quả sau:

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
Merged dataframe with one-to-many realtion ...
   Car  Units  Reg_Price
0  BMW    100      7000
1 Lexus   150      1500
2 Mustang 80      8000
3 Jaguar  90      6000