Để gộp hai DataFrame Pandas với cột chung, sử dụng hàm merge() và đặt tham số ON là tên cột. Để đặt NaN cho các giá trị không khớp, sử dụng tham số how và đặt là left hoặc right. Điều đó có nghĩa là gộp trái hoặc gộp phải.
Trước tiên, nhập thư viện pandas với bí danh:
import pandas as pd
Tạo DataFrame1:
dataFrame1 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 80, 110, 90]
}
)
Tạo DataFrame2:
dataFrame2 = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Tesla', 'Mustang', 'Mercedes', 'Jaguar'],
"Reg_Price": [7000, 1500, 5000, 8000, 9000, 6000]
}
)
Bây giờ, gộp DataFrames với cột chung Car. Tham số "left" hiển thị tất cả giá trị của DataFrame bên trái và đặt NaN cho các giá trị không khớp từ DataFrame thứ hai:
mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car', how="left")
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 cột chung Car và "left" đặt NaN cho giá trị không khớp từ DataFrame thứ hai
mergedRes = pd.merge(dataFrame1, dataFrame2, on='Car', how="left")
print("\nDataFrame gộp với cột chung...\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 data frame with common column... Car Units Reg_Price 0 BMW 100 7000.0 1 Lexus 150 1500.0 2 Audi 110 NaN 3 Mustang 80 8000.0 4 Bentley 110 NaN 5 Jaguar 90 6000.0