Để gộp DataFrame Pandas, sử dụng hàm merge(). Tích Descartes được thực hiện trên cả hai DataFrame bằng cách thiết lập trong tham số how của hàm merge() như sau:
how = "cross"
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', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 120]
}
)
Tạo DataFrame2:
dataFrame2 = pd.DataFrame(
{
"Car": ['BMW', 'Tesla', 'Jaguar'],
"Reg_Price": [7000, 8000, 9000]
}
)
Tiếp theo, gộp DataFrames với "cross" trong tham số "how" tức là Tích Descartes:
mergedRes = pd.merge(dataFrame1, dataFrame2, how="cross")
Ví dụ hoàn chỉnh
Mã nguồn đầy đủ:
import pandas as pd
# Tạo DataFrame1
dataFrame1 = pd.DataFrame(
{
"Car": ['BMW', 'Mustang', 'Bentley', 'Jaguar'],
"Units": [100, 150, 110, 120]
}
)
print("DataFrame1 ...\n", dataFrame1)
# Tạo DataFrame2
dataFrame2 = pd.DataFrame(
{
"Car": ['BMW', 'Tesla', 'Jaguar'],
"Reg_Price": [7000, 8000, 9000]
}
)
print("\nDataFrame2 ...\n", dataFrame2)
# gộp DataFrames với "cross" trong tham số "how" tức là Tích Descartes
mergedRes = pd.merge(dataFrame1, dataFrame2, how="cross")
print("\nDataFrame gộp với tích Descartes...\n", mergedRes)
Kết quả
Chương trình sẽ tạo ra kết quả sau:
DataFrame1 ... Car Units 0 BMW 100 1 Mustang 150 2 Bentley 110 3 Jaguar 120 DataFrame2 ... Car Reg_Price 0 BMW 7000 1 Tesla 8000 2 Jaguar 9000 Merged dataframe with cartesian product... Car Units Car_y Reg_Price 0 BMW 100 BMW 7000 1 BMW 100 Tesla 8000 2 BMW 180 Jaguar 9000 3 Mustang 150 BMW 7000 4 Mustang 150 Tesla 8000 5 Mustang 150 Jaguar 9000 6 Bentley 110 BMW 7000 7 Bentley 110 Tesla 8000 8 Bentley 110 Jaguar 9000 9 Jaguar 120 BMW 7000 10 Jaguar 120 Tesla 8000 11 Jaguar 120 Jaguar 9000