Computer >> Máy Tính >  >> Lập trình >> Python

Python Pandas - Hợp nhất và tạo sản phẩm cartesian từ cả DataFrames

Để hợp nhất Pandas DataFrame, hãy sử dụng merge () hàm số. Sản phẩm cartesian được triển khai trên cả DataFrames bằng cách đặt trong phần “ cách ”Tham số của hàm merge () tức là -

how = “cross”

Đầu tiên, hãy nhập thư viện gấu trúc 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, hợp nhất DataFrames với "cross" trong tham số "how", tức là Sản phẩm Descartes -

mergedRes = pd.merge(dataFrame1, dataFrame2, how ="cross")

Ví dụ

Sau đây là mã

import pandas as pd

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

print("DataFrame1 ...\n",dataFrame1)

# Create DataFrame2
dataFrame2 = pd.DataFrame(
   {
      "Car": ['BMW', 'Tesla', 'Jaguar'],"Reg_Price": [7000, 8000, 9000]

   }
)

print("\nDataFrame2 ...\n",dataFrame2)

# merge DataFrames with "cross" in "how" parameter i.e Cartesian Product
mergedRes = pd.merge(dataFrame1, dataFrame2, how ="cross")
print("\nMerged dataframe with cartesian product...\n", mergedRes)

Đầu ra

Điều này 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